美文网首页
处理概括关系

处理概括关系

作者: 司鑫 | 来源:发表于2017-08-09 11:23 被阅读21次
一 Pull Up Field

怎么说

将两个子类拥有的相同的字段移到父类中

为什么

移除了重复的字段声明,同时也可以促使我们将该字段的行为也移至父类。

二 Pull Up Method

怎么说

有些函数,在各个子类中返回相同的结果,将这些函数移至到父类中。

为什么

避免不必要的重复,从而减少因重复而导致出错的可能性(修改其中一个可能会忘记修改另一个)

三 Pull Up Constructor Body(构造函数本体上移)

怎么说

在各个子类中,它们都有一些构造函数且构造函数的本体一样,那么我们就该在它们的父类中创建一个构造函数,让子类来调用

四 Pull Down Field / Method

怎么说

将父类中的某个字段和方法只被部分子类用到,那么就把这个字段或方法下移到那些需要的子类中去。

五 Extract Subclass

怎么说

类中的某些特性只有在部分的实例中用到,那么我们可以建一个子类,将这些特性下移到子类中。

怎么做

  1. 为源类定义一个新的子类
  2. 为这个新的子类提供一个构造函数
  3. 找出所有调用源类的地方,如果这些地方只需要用到子类的特性,那么将它们改为调用子类构造函数
  4. 逐一使用 Pull Down Filed/ Method 方法将源类的特性下移到子类中去
五 Extract Superclass

怎么说

两个类中有相同的特性,那么建一个父类,将相同的特性上移到父类中去。

怎么做

  1. 创建一个空白的抽象类
  2. 使用 Pull Up Filed 、 Pull Up Method 、 Pull Up Constructor Body 将子类共有的特性上移到父类中去
  3. 每次上移进行测试
  4. 如果子类中还有共通的部分,那么可以使用 Extract Method 先将共通的部分提取出来,再使用 Pull Up Method 将提取的函数上移到父类中
六 Form Template Method (塑造模板方法)

怎么说

有一些子类,它们会按照一些相同的步骤去执行,可能每个步骤的细节不一样。那么我们就可以将这些步骤上移到父类中,将不同的步骤设置为抽象,以便于不同的子类进行实现。

怎么做

  1. 将各个子类中分解目标函数,要么全部相同,要么全部不同
  2. 使用 Pull Up Method 将相同的函数上移到父类中
  3. 对于那些不同的函数,使用 Rename Method 是这些函数的签名完全相同
  4. 使用 Pull Up Method 将所有的原函数都上移到父类中,那么具有不同操作的函数设为抽象的
七 Replace Inheritance with Delegation

怎么说

某个类只是使用了父类中的部分方法,或者是根本就不需要继承父类的数据。那么我们就应该将继承关系转换为委托关系。

怎么做

  1. 在子类中建立一个委托字段,这个字段引用父类的一个实例,并初始化为 this
  2. 将子类中所有调用父类的地方改为调用该委托字段
  3. 移除继承关系,建立一个简单的委托类赋给委托字段
  4. 为每一个继承该父类的子类都建立一个委托类
八 Replace Delegation with Inheritance

怎么说

两个类之间使用委托关系,而且为整个接口编写一些简单的委托函数,那么就该使用继承来替代委托关系。

相关文章

  • 处理概括关系

    0. 本章内容导图 本章所介绍的重构手法专门用来处理类的概括关系(generalization,即继承关系)。 1...

  • 处理概括关系

    一 Pull Up Field 怎么说 将两个子类拥有的相同的字段移到父类中 为什么 移除了重复的字段声明,同时也...

  • 《重构》- 处理概括关系

    一. Full Up Field(字段上移) 介绍 场景两个子类拥有相同的字段。 手法将该字段移至超类。 动机 本...

  • 重构——处理概括关系

    1 Pull Up Field(字段上移) 和 Pull Up Method(函数上移) 将字段或者函数移动到超类...

  • 第11章 处理概括关系

    目录 Pull Up Field(字段上移) Pull Up Method(函数上移) Pull Up Const...

  • 《重构》学习笔记(09)-- 处理概括关系

    概括关系(Generalization),就是平时所说的继承关系。继承是面向对象的语言的重要特性,如何高效科学的使...

  • 第十一章 处理概括(继承)关系

    处理概括关系 即继承关系 11.1 Pull Up Field (字段上移) 两个子类拥有相同的字段 将该字段移至...

  • 航空材料表处理

    航空材料表处理 虽然之前多年的工作跟表处理有关系,但是少了些思考和总结。如上链接的文章很好的概括了表处理的一些知识...

  • 《重构》读书笔记 第十一章

    处理概括关系 11.1 Pull Up Field (字段上移) 两个子类拥有相同的字段,将字段移至超类 11.2...

  • 管理=激发善意+处理关系

    管理大师彼得.德鲁克说“管理就是最大限度的激发他人的善意!”,我觉得“管理”就是本着这份“善意”去处理关系,概括起...

网友评论

      本文标题:处理概括关系

      本文链接:https://www.haomeiwen.com/subject/wwwzlxtx.html