ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### Collapse Hierarchy(折叠继承关系) superclass 和subclass 之间无太大区别。 将它们合为一体。 ![](https://box.kancloud.cn/2016-08-15_57b1b5e75c34e.gif) **动机(Motivation)** 如果你曾经编写过继承体系,你就会知道,继承体系很容易变得过分复杂。所谓重构继承体系,往往是将函数和值域在体系中上下移动。完成这些动作后,你 很可能发现某个subclass 并未带来该有的价值,因此需要把classes 并合(折叠)起来。 **作法(Mechanics)** - 选择你想移除的class :是superclass 还是subclass ? - 使用Pull Up Field 和 Pull Up Method,或者Push Down Method 和 Push Down Field,把想要移除的class 内的所有行为和数据 (值域)搬移到另一个class 。 - 每次移动后,编译并测试。 - 调整「即将被移除的那个class 」的所有引用点,令它们改而引用合并(折叠)后留下的class 。这个动作将会影响变量的声明、参数的型别以及构造函数。 - 移除我们的目标;此时的它应该已经成为一个空类(empty class)。 - 编译,测试。