可以将策略理解成程序中解决问题的一种算法,采用策略模式设计软件不会改变类的结构,但是类中方法的具体实现会根据你选择什么策略而发生变化。
策略模式非常好理解,你要设计一个类,这个类中有一个方法会对数据进行排序,排序的算法有很多,不同的排序算法对不同类型的数据的代价是不一样的。比如你的类可以面临两种不同的数据,一种是数据之间的波动不是很大,并且整体呈上升的,对于这种数据使用插入法会更好些。但是有些数据比较乱,这时候你可能更想使用快排。假设客户端可以控制数据的类型,那么他就如果可以根据不同的数据使用不同的算法就好了。
策略模式用Java实现可以这样写:
public void sort(Sort strategy, List<Integer> lst){
strategy.sort(lst);
}
}
你可以定义一个接口,然后通过不同的实现类就可以使用不同的算法了。