坏味道——中间人(Middle Man)

特征

如果一个类的作用仅仅是指向另一个类的委托,为什么要存在呢?

代码的坏味道(21)——中间人(Middle Man)-LMLPHP

问题原因

对象的基本特征之一就是封装:对外部世界隐藏其内部细节。封装往往伴随委托。但是人们可能过度运用委托。比如,你也许会看到一个类的大部分有用工作都委托给了其他类,类本身成了一个空壳,除了委托之外不做任何事情。

解决方法

应该运用 移除中间人(Remove Middle Man),直接和真正负责的对象打交道。

收益

  • 减少笨重的代码。

代码的坏味道(21)——中间人(Middle Man)-LMLPHP

何时忽略

如果是以下情况,不要删除已创建的中间人:

  • 添加中间人是为了避免类之间依赖关系。
  • 一些设计模式有目的地创建中间人(例如代理模式和装饰器模式)。

重构方法说明

移除中间人(Remove Middle Man)

问题

某个类做了过多的简单委托动作。

代码的坏味道(21)——中间人(Middle Man)-LMLPHP

解决

让客户直接调用委托类。

代码的坏味道(21)——中间人(Middle Man)-LMLPHP

引申阅读

欢迎继续阅读 代码的症与药 系列文章。

04-13 20:41