设计模式——策略模式
一、概念:策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。
二:策略模式的特点 :
- 定义了一组算法(业务规则);
- 封装了每个算法;
- 这族的算法可互换代替。
三、UML示意图:
Context类定义了上下文,通过分离出策略这一项,使得其他部分可复用。需要用到什么策略的时候,只需要把对应的策略类传进上下文即可,当执行上下文接口的时候就会执行到传进来的策略。
四:优缺点
优点:
- 当需要扩展新策略的时候,只需要新增策略子类即可,不需要改动原有代码,遵守了开闭原则。
- 把策略的具体逻辑从算法的使用类中分离出来,降低了耦合度,遵守了单一职责原则。
缺点:
- 调用者必须明确知道所有策略类,并自己决定使用哪一个策略类。
- 每个策略都对应一个策略类会造成有很多策略类。