动机
正好与Extract Class相反。如果一个类不再承担足够责任、不再有单独存在的理由(这通常时因为此前的重构动作移走了这个类的责任),我就会挑选这一“萎缩类”的最频繁用户(也是个类),以Inline Class手法将“萎缩类”塞进另一类中。
做法
- 在目标类身上声明源类的pulic协议,并将其中所有函数委托至源类(如果“以一个独立接口表示源类函数”更合适的话,就应该在内敛之前先使用Extract Interface)。
- 修改所有源类引用点,改而引用目标类(将源类声明为private,以斩断包之外的所有引用可能。同时修改源类的名称,这便可使编译器帮助你捕捉到所有对于源类的隐藏引用点)。
- 编译,测试。
- 运用Move Method和Move Field,将源类的特性全部搬移到目标类。
- 为源类举行一个简单的“丧礼”。
范例
class Person...
public String getName() {
return name;
}
public String getTelephoneNumber() {
return _officeTelephone.getTelephoneNumber(