隐藏的委托
问题
客户端从对象А的字段或方法中获取对象B。然后客户端调用对象B的一个方法。
解决方案
在类a中创建一个新方法,将调用委托给对象B。现在客户端不知道类B,也不依赖类B。
之前

后

为什么重构
首先,让我们来看看术语:
服务器客户机可以直接访问的对象。
委托包含客户端所需功能的最终对象。
当客户端从另一个对象请求一个对象,然后第二个对象请求另一个对象,以此类推,调用链就出现了。这些调用序列让客户端沿着类结构进行导航。这些相互关系中的任何更改都需要客户端进行更改。
好处
- 从客户端隐藏委托。客户端代码需要了解的对象之间关系的细节越少,就越容易对程序进行更改。
缺点
- 如果您需要创建过多的委托方法,服务器级别的风险成为不必要的中间人,导致过度中间的男人.
如何重构
的每一种方法委托类对象中创建方法服务器级别的将调用委托给委托类.
类的方法更改客户端代码,使其调用服务器级别的.
如果您的更改使客户端不再需要委托类的访问方法委托类从服务器级别的(该方法最初用于获取委托类).