设计模式的理解--策略模式

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

 
设计模式的理解--策略模式
 

个人理解:

   需要做一件事情,但事情的内容是不确定的,可能是事情A,可能是事件B,由某些条件决定

 
在程序中体现为:
public class Person {
public void doOneThing(事件类型){
if(事件类型 ==事情A){
//这样做
}else if(事件类型 ==事情B){
//这样这样做
}else {
//.......
}
 
}
}
 
缺点:Person 需要知道每一个事情如何去做,增加新的事情时,会修改代码增加 if else代码让Person知道如何去做,造成doOneThing 方法过大,不易于维护阅读。
 
解决方法:
  将这些可变的事情做法抽取出来,按其共性定义接口Thing,每种事情的做法封装为Thing接口的实现,利用多态的特性,Person只要获得Thing 调用Thing的方法就可以执行某个事了,而不是必须知道事件如何去做。
  当新增事情时,只需要新增Thing接口实现,Person类的结构无需变动。

设计模式的理解--策略模式
 
 策略模式使用中需要解决策略的选择问题。
总结:策略模式本质是利用了对接口操作及多态的特性。