策略模式定义了一组算法族,用具有相同接口的类将算法进行封装,让他们相互之间可以替换,是的算法的变化独立于使用算法的客户端。
1. 策略模式三个原则:
封装变化
面向接口编程,而非面向实习编程
多用组合,少用继承
2. 策略模式的三种角色:
抽象策略角色:为算法组定义一组接口
具体策略角色:算法的具体实现类,每一个算法都必须实现抽象策略角色所定义的接口。
环境角色:持有策略类的引用,总被客户端调用
3. 好处:由于算法和环境相分离,因此算法的改变不会影响到环境角色。
4 缺点:客户端必需清楚有哪些策略类,以便可以灵活使用,另外,可以造成存在过多的策略类。
解决方法:使用工厂模式