代码的坏味道(8)——被拒绝的馈赠(Refused Bequest)

发布时间:2017-3-28 10:35:38 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"代码的坏味道(8)——被拒绝的馈赠(Refused Bequest) ",主要涉及到代码的坏味道(8)——被拒绝的馈赠(Refused Bequest) 方面的内容,对于代码的坏味道(8)——被拒绝的馈赠(Refused Bequest) 感兴趣的同学可以参考一下。

坏味道——被拒绝的馈赠(Refused Bequest)

特征

子类仅仅使用父类中的部分方法和属性。其他来自父类的馈赠成为了累赘。

img

问题原因

有些人仅仅是想重用超类中的部分代码而创建了子类。但实际上超类和子类完全不同。

解决方法

  • 如果继承没有意义并且子类和父类之间确实没有共同点,可以运用 以委托取代继承(Replace Inheritance with Delegation) 消除继承。
  • 如果继承是适当的,则去除子类中不需要的字段和方法。运用 提炼超类(Extract Superclass) 将所有超类中对于子类有用的字段和函数提取出来,置入一个新的超类中,然后让两个类都继承自它。

img

收益

  • 提高代码的清晰度和组织性。

img

重构方法说明

以委托取代继承(Replace Inheritance with Delegation)

问题

某个子类只使用超类接口中的一部分,或是根本不需要继承而来的数据。

img

解决

  1. 在子类中新建一个字段用以保存超类;
  2. 调整子类函数,令它改而委托超类;
  3. 然后去掉两者之间的继承关系。

img

提炼超类(Extract Superclass)

问题

两个类有相似特性。

img

解决

为这两个类建立一个超类,将相同特性移至超类。

img

上一篇:[UWP]创建自定义VisualState Trigger - Yang
下一篇:SLF4J: Class path contains multiple SLF4J bindings.

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款