754 B
754 B
Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦,使得两者可以独立地变化。)
- Abstraction 抽象化角色
- Implementor 实现化角色
- RefinedAbstraction 修正抽象化角色
- ConcreteImplementor 具体实现化角色
优点
- 抽象和实现分离
- 优秀的扩充能力
- 实现细节对客户透明
使用场景
- 不希望或不适用使用继承的场景
- 接口或抽象类不稳定的场景
- 重用性要求比较高的场景
注意事项
主要考虑如何拆分抽象和实现,并不是一涉及继承就考虑该模式, 意图还是对变化的封装,把可能变化的因素封装到最细,最小的逻辑单元中,避免风险扩散