概念:
其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能。
组成:
1.抽象策略角色
这个是一个抽象的角色,通常情况下使用接口或者抽象类去实现。对比来说,就是我们的Comparator接口。
2.具体策略角色
包装了具体的算法和行为。对比来说,就是实现了Comparator接口的实现一组实现类。
3.环境角色
内部会持有一个抽象角色的引用,给客户端调用。对比来说,就是我们的TreeSet类。说明:TreeSet内部一定会有一个策略类的一个成员变量,这样做的目的在于可以当我们在去创建TreeSet对象的时候,可以接收我们向TreeSet类中传递的具体的策略类。
案例:
实现一个加减乘除的功能。
1、定义抽象策略角色
2、定义具体策略角色(本例子仅仅演示,只是定义加、减两种具体策略)
加法策略:
减法策略:
3、环境角色
4、测试类