接上回:
http://www.csdn.net/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 队员); }
注:组件为一个组合或队员。
|