圣诞大减价开始了!

用继承代替委托

问题

一个类包含许多简单的方法,这些方法委托给另一个类的所有方法。

解决方案

使类成为委托继承程序,这样就不需要委托方法了。

之前
将委托替换为之前的继承
将委托替换为继承-之后

为什么重构

委托是一种比继承更灵活的方法,因为它允许改变委托的实现方式并在那里放置其他类。但是,如果只将操作委托给一个类及其所有的公共方法,那么委托就没有好处了。

在这种情况下,如果用继承代替委托,就可以清除类中的大量委托方法,从而不必为每个新的委托类方法创建它们。

好处

  • 减少代码长度。所有这些委托方法都不再需要了。

什么时候不用

  • 如果类只包含对委托类的一部分公共方法的委托,则不要使用此技术。通过这样做,您将违反利斯科夫替换原理

  • 只有当类仍然没有父类时,才可以使用这种技术。

如何重构

  1. 使类成为委托类的子类。

  2. 将当前对象放置在包含对委托对象引用的字段中。

  3. 逐个删除简单委托的方法。如果他们的名字不同,使用重命名方法为所有方法指定一个名称。

  4. 将对委托字段的所有引用替换为对当前对象的引用。

  5. 删除委托字段。

Baidu
map