重构——63提炼超类(Extract Superclass)

提炼超类(Extract Superclass)

两个类有相似特性;为这两个类建立一个超类,将相同的特性搬移到超类

一、动机

减少重复代码

二、做法

1、为原本的类新建一个空白的抽象超类

2、运用Pull Up Field,Pull Up Mehtod,Pull Up Constructor Body逐一将子类的共同元素上移到超类

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

4、检查留在子类中的函数,Extract Method,Pull Up Method,也许可以Form Template Method

5、将所有共同元素都上移到超类后,检查子类的所有用户。如果它们只使用共同接口,你就可以把它们请求的对象改为超类

时间: 2024-09-24 07:10:20

重构——63提炼超类(Extract Superclass)的相关文章

重构——62提炼子类(Extract Subclass)

提炼子类(Extract Subclass) 类中的某些特性只被某些实例用到:新建一个子类,将上面所说的那一部分特性移到子类中 一.动机 你发现类中的某些行为只被一部分实例用到,其他实例不需要它们 二.做法 1.为源类定义一个新的子类 2.为这个新的子类提供构造函数 3.找出调用超类构造函数的所有地点.如果它们需要的是新建的子类,令它们改而调用新的构造函数 4.逐一使用Push Down Method和Push Down Field将源类特性移到子类去 5.Replace Conditional

重构——1提炼函数(Extract Method)

提炼函数(Extract Method) 你有一段代码可以被组织在一起并独立出来,将这段代码放进一个独立的函数中,并让函数名称解释该函数的用途. 一.动机 1.每个函数的粒度都小,那么被复用的几率就大 2.函数的长度不是问题,关键在于函数名称和函数本体之间的语义距离 3.使高层函数读起来向一系列注释 4.如果函数都是细粒度,那么函数覆盖也会更容易些 二.做法 1.创建函数,名字要起好 2.转移代码 3.检查提炼出的代码是否引用了作用域限于原函数的变量(临时变量和源函数参数) 4.检查是否有任何的

重构——12提炼类(Extract Class)

提炼类(Extract Class) 并发和事务的风险:某个类做了两个类做的事:建立一个新类,将相关的字段和函数从旧类搬移到新类 一.动机 1.让类的抽象更清楚,让类的责任更明确 2.如果某些数据和函数总是一起出现,某些数据经常同时变化甚至彼此相依,这就表示你应该将它们分离出去 3.子类化的时候你发现某些特性需要以一种方式来子类化,另外一些特性需要以另一种方式子类化,这就意味着你需要分解原来的类 二.做法 1.决定如何分解类所负的责任 2.建立一个新类,用以表现从旧类分离出来的责任 3.建立从"

重构——64提炼接口(Extract Interface)

提炼接口(Extract Interface) 若干客户使用类接口中的同一子集,或者两个类的接口有部分相同:将相同的子类提炼到一个独立接口中 一.动机 1.接口对于java程序的设计方式有着巨大的影响 2.如果某个类在不同环境下扮演截然不同的角色,使用接口就是个好主意 二.做法 1.新建一个接口 2.在接口中声明待提炼类的共通操作 3.让相关的类实现上述接口 4.调整客户端的类型声明,令其使用该接口

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

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

《重构与模式(修订版)》目录—导读

版权声明 重构与模式(修订版) Authorized translation from the English language edition, entitled: Refactoring to Patterns, 978-0-321-21335-8 by Joshua Kerievsky, published by Pearson Education, Inc., publishing as Addison- Wesley Professional, Copyright 2005 Pears

《重构:改善既有代码的设计》—重构列表

重构列表重构:改善既有代码的设计Add Parameter(添加参数) Change Bidirectional Association to Unidirectional(将双向关联改为单向关联) Change Reference to Value(将引用对象改为值对象) Change Unidirectional Association to Bidirectional(将单向关联改为双向关联) Change Value to Reference(将值对象改为引用对象) Collapse H

eclipse 重构(转)

  Eclipse中的重构类型        如果你看一下Eclipse的重构菜单,可以看到四部分.第一部分是撤销和重做.其他的三部分包含Eclipse提供的三种类型的重构.        第一种类型的重构改变代码的物理结构,像Rename和Move.第二种是在类层次上改变代码结构,例如Pull Up和Push Down.第三种是改变类内部的代码,像Extract Method和Encapsulate Field.这三部分的重构列表如下. 类型1 物理结构 l         Rename l 

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

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