`
dajian
  • 浏览: 112954 次
  • 性别: Icon_minigender_1
  • 来自: 白云
社区版块
存档分类
最新评论

1.策略模式-Strategy

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

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


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




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


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


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

缺点:
1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
2.造成很多的策略类。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics