积木

No sub title

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

      Strategy模式(即:策略模式)。其所要所要解决的问题,同Template模式是同一类问题。但具体的处理方式有所不同。Template则是使用:封装继承与多态的方式实现(主要是:继承与多态)。而策略模式,则主要使用继承连同“组合”的方式来实现逻辑接口的提供。因此,如果Template模式中的逻辑接口要是有许多的话,则逻辑抽象基类,将变得十分庞大而复杂。同时,不同实现类的接口将全部暴露无疑。而组合则重在将某一逻辑接口的实现通过多个对象的组合方式实现之。下面看下策略模式的结构:
 1class Strategy
 2{
 3public:
 4  //
 5  virtual void Func1(void= 0;
 6  virtual void Func2(void= 0;//这两个接口只是示例
 7  // some other interfaces here
 8}
;
 9
10class Sub1 : Strategy
11{
12public:
13  void Func1(void)
14  {
15    // do something
16  }

17  void Func2(void)
18  {
19    // do something
20  }

21}
;
22
23class Sub2 : Strategy
24{
25public:
26  void Func1(void)
27  {
28    // do something
29  }

30  void Func2(void)
31  {
32    // do something
33  }

34}
;
35
36class Strategy;
37//策略类结构
38class Context
39{
40public:
41  Context(const Strategy* pStrategyObj) : m_pStrategyObj(pStrategyObj) {}
42  // 
43  // 逻辑接口DoAction
44  void DoAction(void)
45  {
46    if (NULL != m_pStragegyObj)
47    {
48      m_pStrategyObj->Func1();
49      m_pStrategyObj->Func2();
50      // 
51    }

52  }

53}
;

 

    注意:设计模式中,更提倡优先使用组合,而非继承。详细原因,也可以从以上模式比较得出。

posted on 2011-06-12 12:13 Jacc.Kim 阅读(278) 评论(0)  编辑 收藏 引用 所属分类: 设计模式

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理