曾用名:以对象取代数据值(Replace Data Value with Object)
曾用名:以类取代类型码(Replace Type Code with Class)
//重构前
orders.filter{o => "high" === o.priority
|| "rush" === o.priority
};
//重构后
orders.filter{o => o.priority.higherThan(new Priority("normal"))}
做法:
1、如果变量尚未被封装起来,先使用【封装变量】封装他。
2、为这个数据值创建一个简单的类,类的构造函数应该保存这个数据值,并为它提供一个取值函数
3、执行静态检查
4、修改第一步得到的设置函数,令其创建一个新类的对象并将其存入字段,如果有必要的话,同时修改字段的类型声明
5、修改取值函数,令其调用新类的取值函数,并返回结果。
6、测试
7、考虑对第一步得到的访问函数使用函数【改名】,以便更好反映其用途。
8、考虑应用将引用对象改为值对象或将值对象改为引用对象,明去指出新对象的角色是值对象还是引用对象。