- 应用场景:定义算法族,封装起来,使他们之间可以相互替换。
- 优势:使算法的变化独立于使用算法的用户
- 敏捷原则:接口隔离原则;多用组合,少用继承;针对接口编程,而非实现。
- 实例:排序算法,NSArray的sortedArrayUsingSelector;
- 注意事项:
1. 剥离类中易于变化的行为,通过组合的方式嵌入抽象基类
2. 变化的行为抽象基类为,所有可变变化的父类
3. 用户类的最终实例,通过注入行为实例的方式,设定易变行为
4.防止了继承行为方式,导致无关行为污染子类。完成了策略封装和可替换性。
- 详见设计模式之策略模式
- 策略模式相比起工厂模式,在形式上看差不多,差异的地方在于策略模式可以调用接口直接得到最终的结果,而工厂模式侧重于输出某个对应的产品,再由产品得出最终的结果