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

简介: 提炼类(Extract Class):并发和事务的风险;某个类做了两个类做的事;建立一个新类,将相关的字段和函数从旧类搬移到新类

提炼类(Extract Class)

并发和事务的风险;某个类做了两个类做的事;建立一个新类,将相关的字段和函数从旧类搬移到新类

一、动机

1、让类的抽象更清楚,让类的责任更明确

2、如果某些数据和函数总是一起出现,某些数据经常同时变化甚至彼此相依,这就表示你应该将它们分离出去

3、子类化的时候你发现某些特性需要以一种方式来子类化,另外一些特性需要以另一种方式子类化,这就意味着你需要分解原来的类

二、做法

1、决定如何分解类所负的责任

2、建立一个新类,用以表现从旧类分离出来的责任

3、建立从“旧类访问新类”的连接关系,需要的时候建立双向连接

4、对于你想搬移的每一个字段,使用Move Field搬移之

5、每次搬移后,编译,测试

6、使用Move Method将必要的函数搬移到新类。先搬移较低层次的函数,再搬移较高层函数

7、每次搬移后,编译,测试

8、检查,精简每个类的接口,检查双向连接是否可以改为单项连接

9、检查是否公开新类。如果你的确需要公开它,就要决定让它成为引用对象还是不可变的值对象

目录
相关文章
|
设计模式 存储 SQL
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(上)
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(上)
122 0
|
设计模式 存储 Java
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(下)
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(下)
194 0
|
程序员
祖传shi山代码重构实战(01)-Extract Class提炼类
某个类做了应该由两个类做的事。 建立一个新类,将相关的字段和函数从旧类移到新类。
136 0
|
设计模式 JavaScript 前端开发
class 继承的重点
前文已提过:在 class 出现之前,JavaScript 实现继承是件麻烦事,构造函数继承有加上原型上的函数不能复用的问题;原型链继承又存在引用值属性的修改不独立的问题;组合继承又存在两次调用构造函数的问题,寄生组合继承,写起来又太麻烦了,总之,在 class 出现前,JavaScipt 实现继承真是件麻烦事儿。
重构——29以数据类取代记录(Replace Record with Data Class)
以数据类取代记录(Replace Record with Data Class):你需要面对传统编程环境中的记录结构;为该记录创建一个“哑”数据对象
1553 0
|
前端开发 JavaScript
前端培训-中级阶段(31)- Class的基本语法,Class的继承(2019-12-26期)
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。
151 0
前端培训-中级阶段(31)- Class的基本语法,Class的继承(2019-12-26期)
重构——62提炼子类(Extract Subclass)
提炼子类(Extract Subclass):类中的某些特性只被某些实例用到;新建一个子类,将上面所说的那一部分特性移到子类中
1382 0
|
Java
重构——64提炼接口(Extract Interface)
提炼接口(Extract Interface):若干客户使用类接口中的同一子集,或者两个类的接口有部分相同;将相同的子类提炼到一个独立接口中
1511 0
重构——1提炼函数(Extract Method)
提炼函数(Extract Method):你有一段代码可以被组织在一起并独立出来,将这段代码放进一个独立的函数中,并让函数名称解释该函数的用途。
1245 0