策略模式

一、定义

策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式的变化独立于使用算法的客户。

二、例子

策略模式就是用来封装算法的,但在实践的时候,我们可以用它来封装几乎任何类型的规则。例如:

1.出门出行的方式,骑行,公交,地铁,火车,飞机,汽车,火箭等。

2.商城物品促销策略,打折,满减,返利等。

三、结构

 

 

  其中,Context是上下文,用一个ConcreteStratege来配置,维护一个对于Strategy对象的引用;Strategy是策略类,用于定义所有支持算法的公告接口;ConcreteStrategy是具体策略类,封装了具体的算法和行为,继承于Strategy。

  代码示例:

 

  运行结果:

 

 

 

四、优点

1.算法可以自由切换。

2.避免多重判断。

3.扩展性良好,增加策略只需实现接口即可。

4.简化单元测试。

五、缺点

 

1.策略类多,重用性低。

2.要暴露全部策略类。

posted on 2020-08-23 16:58  lylzzz  阅读(65)  评论(0编辑  收藏  举报