设计模式-策略模式
2017-03-28 17:16
204 查看
最近在学习设计模式,就记录一些自己的学习过程,希望和大家共同进步,有意见不一致的请提出指点。
策略模式(Strateyg Pattern):
是一种行为模式,定义算法族(指同一种行为不同的表现方式),分别封装起来,可以在不影响客户端的情况下使得算法之间相互替换。
角色概括:
具体产品抽象类:
具体产品实现类:
行为变化抽象类或接口:
具体行为实现类:
UML图如下:
why-为什么要使用它?
可以将变化的事物封装起来,动态的使用。如果不使用这种设计模式,那将会造成代码大量重写,业务判断混乱。
举个例子:如果一个编写计算器,首先实现加法算法,然后就编写了一个算法类,类中定义一个加法方法。如果后续需要新加减法算法,然后需要修改算法类,增加一个减法方法,违法了面向对象的开闭原则,并且变化是不断的,可能之后还会增加乘法算法、除法算法等,所以我们应该要将可变的分离出来,这个时候我们就可以使用策略模式,使用策略模式后如果需要增加算法,只需要增加相对应的算法子类即可,不会影响其他算法。
策略模式(Strateyg Pattern):
是一种行为模式,定义算法族(指同一种行为不同的表现方式),分别封装起来,可以在不影响客户端的情况下使得算法之间相互替换。
角色概括:
具体产品抽象类:
具体产品实现类:
行为变化抽象类或接口:
具体行为实现类:
UML图如下:
why-为什么要使用它?
可以将变化的事物封装起来,动态的使用。如果不使用这种设计模式,那将会造成代码大量重写,业务判断混乱。
举个例子:如果一个编写计算器,首先实现加法算法,然后就编写了一个算法类,类中定义一个加法方法。如果后续需要新加减法算法,然后需要修改算法类,增加一个减法方法,违法了面向对象的开闭原则,并且变化是不断的,可能之后还会增加乘法算法、除法算法等,所以我们应该要将可变的分离出来,这个时候我们就可以使用策略模式,使用策略模式后如果需要增加算法,只需要增加相对应的算法子类即可,不会影响其他算法。
相关文章推荐
- 设计模式之Strategy(策略)
- 设计模式之策略模式(strategy)--游戏角色使用武器
- [设计模式] 23.Strategy 策略模式
- [★] .NET 偶尔连接的设计策略 -联机状态- 脱机模式- 数据同步
- 设计模式袖珍版 连续转载之 - Strategy(策略)
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
- 设计模式随笔系列:鸭子-策略模式(Strategy)[原]
- 设计模式之Strategy(策略)
- 设计模式之策略模式探讨初步[引]
- 设计模式随笔系列:鸭子-策略模式(Strategy)[转]
- 设计模式之Strategy(策略)
- Java设计模式学习之一---策略模式
- AspectJ实现设计模式(二)——策略模式
- 设计模式之策略模式探讨初步
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 设计模式与泡mm的关系之strategy策略模式及再思考
- 设计模式之Strategy(策略)
- 设计模式随笔系列:鸭子-策略模式(Strategy)
- 设计模式(20)-策略模式(Strategy)