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

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

提炼类(Extract Class)

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

一、动机

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

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

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

二、做法

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

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

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

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

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

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

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

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

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

目录
相关文章
|
6月前
|
JavaScript
js开发:请解释什么是ES6的类(class),并说明它与传统构造函数的区别。
ES6的类提供了一种更简洁的面向对象编程方式,对比传统的构造函数,具有更好的可读性和可维护性。类使用`class`定义,`constructor`定义构造方法,`extends`实现继承,并可直接定义静态方法。示例展示了如何创建`Person`类、`Student`子类以及它们的方法调用。
58 2
|
6月前
|
前端开发 开发者
【专栏】BEM(Block-Element-Modifier)是一种前端命名规范和架构方法,旨在创建清晰、可维护的代码结构。
【4月更文挑战第29天】BEM(Block-Element-Modifier)是一种前端命名规范和架构方法,旨在创建清晰、可维护的代码结构。它包括Block(独立功能单元)、Element(Block的子元素)和Modifier(表示状态或变体)。BEM的特点包括命名一致性、模块化设计、清晰结构和可复用性,适用于代码组织、样式管理、组件化开发和团队协作。虽然命名较长和学习成本是其局限性,但BEM在提升代码质量和效率方面具有显著优势,是前端开发的重要工具。
124 0
|
设计模式 存储 SQL
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(上)
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(上)
140 0
|
设计模式 存储 Java
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(下)
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(下)
199 0
|
程序员
祖传shi山代码重构实战(01)-Extract Class提炼类
某个类做了应该由两个类做的事。 建立一个新类,将相关的字段和函数从旧类移到新类。
144 0
ts重点学习115-类的装饰器
ts重点学习115-类的装饰器
63 0
ts重点学习115-类的装饰器
重构——29以数据类取代记录(Replace Record with Data Class)
以数据类取代记录(Replace Record with Data Class):你需要面对传统编程环境中的记录结构;为该记录创建一个“哑”数据对象
1559 0
重构——62提炼子类(Extract Subclass)
提炼子类(Extract Subclass):类中的某些特性只被某些实例用到;新建一个子类,将上面所说的那一部分特性移到子类中
1388 0
|
Java
重构——64提炼接口(Extract Interface)
提炼接口(Extract Interface):若干客户使用类接口中的同一子集,或者两个类的接口有部分相同;将相同的子类提炼到一个独立接口中
1518 0