重构——65折叠继承体系(Collapse Hierarchy)

折叠继承体系(Collapse Hierarchy)

超类和子类之间无太大区别;将它们合为一体

一、动机

1、继承体系很容易变得过分复杂

2、重构了继承体系后,有些类没有用了,需要把子类和超类合并起来

二、做法

1、选择想要移除的类:是超类还是子类

2、Pull Up Field,Pull Up Method或者 Push Down Method, Push Down Field

3、每次移动后,编译并测试

4、调整即将被移除的那个类的所有引用点,令它们改而引用合并后留下的类。这个动作将会影响变量的声明,参数的类型及构造函数

5、移除我们目标:此时的它应该已经成为了一个空类

6、编译,测试

时间: 2024-09-20 06:08:44

重构——65折叠继承体系(Collapse Hierarchy)的相关文章

重构——72提炼继承体系(Extract Hierarchy)

提炼继承体系(Extract Hierarchy) 你有某个类做了太多工作,其中一部分工作以大量条件表达式完成 建立继承体系,以一个子类表示一种特殊情况 动机 渐进式设计

实例解析继承体系重构及ORM映射

本文以双鱼座同学的再说继承关系一文中提到的一组三元继承关联关系为基础. 首先,分别实现本人的ORM中的继承关系映射全解一文中提到的三种实体继承体系到关系数据库的映射方案实例. 接着,使用接口分离以上继承体系中的实体类中的相同概念,对该继承体系进行重构,并同样给出对重构后的继承体系的三种到关系数据库的映射方案实例. 全部实例代码基于NBear的接口式实体定义方式实现. 1. 背景 首先,给出双鱼座同学原文中的三元继承关联关系的等价接口定义.见下图1: 2. 对图1-1的ORM映射 2.1 单表继承

JBuilder2005实现重构之类继承体系间

在JBuilder中通过重构将值域.方法在类的继承体系中上推下移,是非常容易的操作.这了说明这种重构功能,我们先来看下面的类继承体系: 图15 类的继承类图 Animal类是Cat和Horse和父类,Animal中包含了两个值域和一个方法.可以将Animal中的值域有选择地下移到某个子类中.此外,还可以为Animal提炼超类和接口. 1.搬迁方法 打开Animal.java并将光标定位到howl()方法处,通过Ctrl+Shift+R->Push Down Method调出下移方法对话框: 图1

重构——69梳理并分解继承体系(Tease Apart Inheritance)

梳理并分解继承体系(Tease Apart Inheritance) 某个继承体系同时承担两项责任:建立两个继承体系,并通过委托关系让其中一个可以调用另一个 动机 1.如果继承体系中的某一个特定层级上的所有类,其子类名称都是以相同的形容词 2.开始,那么这个体系就很可能承担着两项不同的责任

代码重构(五):继承关系重构规则

陆陆续续的发表了多篇关于重构的文章了,还是那句话,重构是一个项目迭代开发中必不可少的一个阶段.其实重构伴随着你的项目的整个阶段.在前几篇关于重构的文章中我们谈到了函数的重构.类的重构.数据的重构以及条件表达式的重构,那么今天咱们就来聊聊继承关系的重构.当然还是延续前几篇博客的风格,我们在博客中的代码实例依然使用Swift语言来实现,当然还是那句话,使用什么语言无所谓,关键是看重构的场景以及重构的思想. "重构"不仅仅可以改善你既有的代码设计,还可以改变你组织代码的思路,使你的程序在设计

ORM中的继承关系映射全解——单表继承体系、一实体一具体表、一实体一扩展表

ORM中的继承关系映射全解--单表继承体系.一实体一具体表.一实体一扩展表.接口映射 本文涉及的内容包括: 1.单表继承体系 2.一实体一具体表 3.一实体一扩展表 4.接口实现映射vs基类继承映射 1.单表继承体系 所谓单表继承体系就是用一张数据库表存储整个继承体系中的所有实体的数据.单表继承体系适合那种继承体系中实体数目相对较少,总记录数相对较少,子类对父类的属性扩展也相对较少的情形. 单表继承体系优点是读/写继承体系中的每个实体的数据,都只需操作一张表,性能较好,并且,新增继承类,或扩展实

《Effective Ruby:改善Ruby程序的48条建议》一第6条:了解Ruby如何构建继承体系

第6条:了解Ruby如何构建继承体系 问题:当你向一个对象发送消息时,你知道Ruby是怎么定位到那个正确的方法的吗?答案看上去很简单:使用继承体系.之所以说答案是看上去简单,因为Ruby构建继承体系是在幕后进行的.这是Ruby用自己的方式来隐藏真正发生的事情的罕见情形之一,它常常带来不必要的困惑.Ruby提供给我们的用来发现继承关系中的类的方法并能完全解释其本质.还好,Ruby解释器在内部构建的继承体系是一致而简单的,只要你明白一些它的技巧. 探索Ruby查询方法的机制将揭开语言实现方式的面纱,

使用主动实体(ActiveEntity)简化继承体系映射类的写操作

在上一篇文章ORM中的继承关系映射全解中,演示了各种继承关系映射在NBear中实现示例,只不过,文中的示例对于一实体一具体表和一实体一扩展表方案下的子类的保存操作,需要用户手动save实体本身和其所有的父类对应的表.这多少有点不爽,因为,实体的用户是很难全都了解具体要save多少表的.为了解决这个问题,在最新的v2.1.6版中,为NBear新增了一个ActiveEntity类.ActiveEntity类最大的作用是封装了子类的插入,修改和删除操作.另外,ActiveEntity能够自动记录修改过

重构——68以继承取代委托(Replace Delegation with Inheritance)

以继承取代委托(Replace Delegation with Inheritance) 你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托关系:让委托类继承受托类 一.动机 需要受托类中的所有函数 二.做法 1.让委托端成为受托端的一个子类 2.编译 3.将受托字段设为该字段所处对象本身 4.去掉简单的委托函数 5.编译并测试 6.将所有其它涉及委托关系的代码,改为调用对象自身 7.移除受托字段