随笔-31  评论-2  文章-0  trackbacks-0

1.策略模式-Strategy

策略模式
是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。
策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。

一句话来形容:准备一组算法,并将每一个算法封装起来,使得他们可以互换


策略模式的结构
策略模式涉及到三个角色:
  • 环境角色:持有一个Strategy类(策略类)的引用
  • 抽象策略角色:策略类,通常由一个接口或者抽象类实现
  • 具体策略角色:包装了相关的算法和行为




《三国演义》中的故事
诸葛亮的精囊妙计三条妙计
走乔国老的后门,求孙国太放人,请孙夫人退兵
赵云按计行事
环境角色:赵云由他来决定选择策略
抽象策略角色:(接口)精囊妙计按计行事(抽象方法)
具体策略角色:三条妙计(单独使用的)


例子:一个策略模式的加减乘除
抽象策略角色: (精囊妙计) Operation抽象类(oper抽象方法)
具体策略角色: (三条妙计) 计算乘积,计算除法,计算加法,计算减法
环境角色:  (赵云)  有一个策略类( Operation )的引用


策略模式的优缺点:
优点:
1.提供了管理相关的算法族的办法。
2.提供了可以替换继承关系的办法。
3.避免使用多重条件转移语句

缺点:
1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
2.造成很多的策略类。
posted on 2009-08-04 12:21 xiaoxinchen 阅读(227) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: