简化函数调用

以委托取代子类(Replace Subclass with Delegate)

title content
场景 继承关系遇到问题时运用以委托取代子类是常见的情况
意义 与继承关系相比,使用委托关系时接口更清晰、耦合更少。
定义
做法 创建一个空的委托类,这个类的构造函数应该接受所有子类特有的数据项,并且经常以参数的形式接受一个指回超类的引用。
注意

以委托取代超类(Replace Superclass with Delegate)

Tip

除了”子类用得上超类的所有函数”之外,合理的继承关系还有一个重要特征:子类的所有实例都应该是超类的实例

通过超类的接口来使用子类的实例应该完全不出问题

title content
场景
意义
定义
做法 首先(尽量)使用继承,如果发现继承有问题,再使用以委托取代超类。
注意

隐藏"委托关系"(Hide Delegate)

title content
场景 客户通过一个委托来调用另一个对象。
意义  
定义 在服务类上建立客户所需的所有函数,用以隐藏委托关系。
做法
注意

移除中间人(Remove Middle Man)

title content
场景 某个类做了过多的简单委托动作。
意义
定义 让客户直接调用受托类。
做法
注意