//重构前
class Person{
get officeAreaCode(){ return this._officeAreaCode;}
get officeNumber(){ return this._officeNumber;}
}
//重构后
class Person{
get officeAreaCode(){ return this._telephoneNmber.areaCode;}
get officeNumber(){return this._telephoneNumber.number;}
}
class TelephoneNmber{
get areaCode(){ return this._areaCode;}
get number(){ return this._number;}
}
做法:
1、决定如何分解类所负的责任
2、创建一个新的类,用以表现从旧类中分离出来的责任
如果旧类剩下的责任与旧类的名称不符,为旧类改名。
3、构造旧类时创建一个新类的实例,建立“从旧类访问新类” 的连接关系。
4、对于你想要搬移的每一个字段,运用【搬移字段】搬移之,每次更改后运行测试。
5、使用搬移函数将必要函数搬移到新类,先搬移较低层函数(也就是“被其他函数调用” 多余 “调用其他函数” 者),每次更改后运行测试。
6、检查两个类的接口,去掉不在需要的函数,必要时为函数重新取一个适合新环境的名字。
7、决定是否公开新的类,如果确实需要,考虑对新类应用【将引用对象改为值对象】 使其成为一个值对象。