足球战术->组合进攻之composite篇

博客介绍了Composite模式在球员进攻组合中的应用。该模式可简化教练指挥,便于在原战术中加入新队员或组合,但无法限制特定队员或组合加入。文中还给出了相关代码示例,组件可为组合或队员。

接上回:

http://www.youkuaiyun.com/develop/read_article.asp?id=11120

最有效的进攻方法是几个球员组合成composite来进攻,
这个composite又可以和其他球员和composite组合成
新的composite,如此递归...Composite模式简化了
教练(client)的指挥,因为他不用考虑某个进攻模块
是单个队员还是composite,而且也容易在原战术上
加入新增加的队员或composite,但是使用起来会出现
你不希望某个进攻组合中有某个队员或组合时,你无法
限制他们,只有在比赛进行中灵活运用。
代码如下:
class 组合;

class 组件{
public:
    virtual 组合* 得到组合(){return 0;}
};

class 组合:public 组件{
public:
    void 添加(组件*);
    virtual 组合* 得到组合(){return this;}
};

class 队员:public 组件{
};

组合* a组合=new 组合;
队员* a队员=new 队员;

组件* a组件;
组合* test;

a组件=a组合;
if(test=a组件->得到组合()){
   test->添加(new 队员);
}

a组件=a队员;

if(test=a组件->得到组合()){
   test->添加(new 队员);
}

注:组件为一个组合或队员。

 

<log4net OverdueDays="10"> <root> <!--level value="DEBUG"/--> <level value="ALL"/> <!--自定义日志输出类型--> <!--appender-ref ref="ErrorRollingFileAppender"/--> <!--appender-ref ref="DebugRollingFileAppender"/--> <!--appender-ref ref="InfoRollingFileAppender"/--> <!--根据log级别记录到不同的日志文件--> <appender-ref ref="DebugLogger" /> <appender-ref ref="InfoLogger" /> <!--<appender-ref ref="WarnLogger" />--> <appender-ref ref="ErrorLogger" /> <!--<appender-ref ref="FatalLogger" />--> </root> <!--自定义日志输出参数--> <!--Debug文件日志记录器--> <appender name="DebugLogger" type="log4net.Appender.RollingFileAppender"> <!--日志存放文件夹--> <file value="Log\parm_Logs\"/> <!--是否追加到文件--> <appendToFile value="true" /> <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--使用UTF-8编码--> <Encoding value="UTF-8" /> <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> <maxSizeRollBackups value="10"/> <!--是否只写到一个文件中--> <StaticLogFileName value="false"/> <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置--> <param name="datePattern" value="yyyy-MM-dd'.log'"/> <!--过滤设置,LevelRangeFilter为使用的过滤器。--> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="DEBUG" /> <levelMax value="DEBUG" /> </filter> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d{HH:mm:ss }%message %newline"/> <!-- 输出格式 日期,日志级别,消息,换行--> <!--param name="ConversionPattern" value="%date [%-5p] %message%n" /--> </layout> </appender> <!--InfoLog文件日志记录器--> <appender name="InfoLogger" type="log4net.Appender.RollingFileAppender"> <!--日志存放文件夹--> <file value="Log\operation_Log\"/> <!--是否追加到文件--> <appendToFile value="true" /> <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--使用UTF-8编码--> <Encoding value="UTF-8" /> <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--> <maxSizeRollBackups value="10"/> <!--是否只写到一个文件中--> <StaticLogFileName value="false"/> <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置--> <param name="datePattern" value="yyyy-MM-dd'.log'"/> <!--过滤设置,LevelRangeFilter为使用的过滤器。--> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="INFO" /> <levelMax value="INFO" /> </filter> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <!-- 输出格式 日期,日志级别,消息,换行--> <!--param name="ConversionPattern" value="%date [%-5p] %message%n" /--> <conversionPattern value="%d{HH:mm:ss }%message %newline"/> </layout>这个为什么在文件夹中存储日志个数远超10个
最新发布
12-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值