美文网首页
第7章 在对象之间搬移特性

第7章 在对象之间搬移特性

作者: 后来丶_a24d | 来源:发表于2020-03-16 16:49 被阅读0次

目录

  • MoveMethod(搬移函数)
  • MoveField(搬移字段)
  • InlineClass(将类内联化)
  • HideDelegate(隐藏“委托关系”)
  • RemoveMiddleMan(移除中间人)
  • IntroduceForeignMethod(引入外加函数)
  • IntroduceLocalExtension(引入本地扩展)

在对象之间搬移特性

搬移函数

做法:

  • 检查原类中被原函数所使用的一切特性,包括字段和函数,考虑它们是否也被搬移
  • 检查原类的子类和超类,看看是否有该函数的其它声明

搬移字段

做法:

  • 如果字段的访问级别是public,将其封装起来。
  • 在目标类中建立与原字段相同的字段,并同时建立相应的设值/取值函数。
  • 决定如何在原对象中引用目标对象。
  • 删除原字段。
  • 将所有对原字段的引用替换为对某个目标函数的调用。

将类内联化

  • 某个类并没有做太多的事情,将这个类的所有特性搬移到另一个类中,然后移除原类。

隐藏“委托关系”

  • 客户通过一个委托类在调用另一个对象。在服务类上建立客户所需的所有函数,用以隐藏委托关系。
  • 如果某个客户先通过服务对象的字段得到另一个对象,然后调用后者的函数,那么客户就必须知晓这一层委托关系。万一委托关系发生变化,客户也得相应变化。你可以在服务对象上放置一个简单的委托函数,将委托关系隐藏起来,从而去除这种依赖。

移除中间人

  • 某个类做了过多的简单委托动作,让客户直接调用受托类。
  • 在“隐藏委托关系”中,谈到了“封装受托对象的好处”。但是这层封装是需要付出代价的:每当客户要使用受托类的新特性时,你就必须在服务器端添加一个简单委托函数。
  • 移除中间人手法和“隐藏委托关系”正好相反,正是由于相反,才能够在实际的应用中进行灵活的变通。可能一些委托关系需要保留,而另一些却需要移除,让客户直接使用受托对象。这些都是可以随之变通的。对于各种不同重构手法的使用,同样没有绝对的规定,都是需要依据实际灵活使用的。

引入外加函数(外加函数是权宜之计, 多的话就引入本地扩展)

  • 你需要为提供服务的类增加一个函数,但你无法修改这个类;在客户端建立一个函数,并以第一参数形式传入一个服务类实例

引入本地扩展


参考文章

相关文章

  • 在对象之间搬移特性

    0. 本章内容导图 1. 重构手法 1.1 搬移函数 概要:你的程序中,有个函数与其所驻类之外的另一个类进行更多交...

  • 《重构》- 在对象之间搬移特性

    一. Move Method(搬移函数) 介绍 场景你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用...

  • 重构——在对象之间搬移特性

    在对对象的设计过程中,“决定把责任放在哪儿”即使不是最重要的事,也是最重要的事情之一。 1 Move Method...

  • 第7章 在对象之间搬移特性

    目录 MoveMethod(搬移函数) MoveField(搬移字段) InlineClass(将类内联化) Hi...

  • 重构手法--在对象之间搬移特性

    在对象之间搬移特性 1、搬移函数 一个函数大量使用其他类的东西,高度耦合: 把函数搬到它所引用的类target c...

  • 002-在对象之间搬移特性

    在对象之间搬移特性 1. Move Method(搬移函数) Q:你的程序中,有个函数与其所驻类之外的另一个类进行...

  • 对象间搬移特性

    "决定把责任放在哪儿”是对象技术中非常重要的事情之一。 Move Method如果某个函数与其所在之外的另一个类有...

  • 在对象间搬移特性

    一 Move Method 怎么说 在一个函数最常引用的类中建立一个新的类似的函数,将旧的函数变为一个委托函数或者...

  • 重构-读书笔记二

    重构第七章主要说的是在对象之间搬移特性 先说自己的感受,这个是在面向对象设计期间非常重要而且不好把握的地方,具体的...

  • 重构(笔记)——第七章

    在对象之间搬移特性 “决定把责任放在哪儿” 搬移函数 一个类有太多的行为,或者如果一个类与另一个类有太多使用而形成...

网友评论

      本文标题:第7章 在对象之间搬移特性

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