1. 纯稚的数据类
定义
:仅拥有一些字段,以及访问(读写)这些字段的函数,除此之外一无长物。
影响
:将数据与行为间的关系割裂,破坏了面向对象的精髓。特定数据的操作分散在代码各处,可能造成代码霰弹式修改。
重构目标
:特定数据的操作分散在代码各处,可能造成代码霰弹式修改。将特定的数据的操作集中在一个地方,提高代码的可读性、可维护性、可扩展性等。
重构方法
:
- 封装变量
- 移除设值函数
- 封装集合
- 提取方法
- 搬移函数
常见特点
:
- 一个类仅有变量及Set/Get 方法
重构中可能用到的快捷键操作
:
操作 | 快捷键 |
---|---|
封装变量 | Ctrl + Alt + Shift + T -> Encapsulate Fields 鼠标右键 -> refactor -> Encapsulate Fields |
抽提函数 | Ctrl + Alt + M |
用内联移除移除设值函数 | Ctrl + Alt +N |
直接删除 | Alt + Del |
搬移函数 | F6 |
2. 被拒绝的遗赠
定义
:有一个子类,它想继承基类的部分函数和数据,不需要基类提供的全部内容,这些不需要的函数和数据成为子类实现的负担,就是被拒绝的遗赠。
影响
:通常影响不大,但是对于子类拒绝实现的接口或者基类的方法只属于某个子类特定方法等,就影响比较大。
重构目标
:改进继承体系设计。
重构方法
:
- 函数下移
- 字段下移
- 以委托取代超类/子类
常见特点
:
- 子类不需要父类的所有函数和属性,还需要实现不需要的抽象方法
- 不满足继承关系,但用继承获取相关属性
重构中可能用到的快捷键操作
:
操作 | 快捷键 |
---|---|
接口/函数/字段下移 | Pull Member Up/Push Member Down |
引入变量/参数 | Ctrl + Alt + V/P |
内联 | Ctrl + Alt + N |
委托取代继承 | Replace Inheritance With Delegation |
声明:本文仅用于学习交流。