1.Self Encapsulate Field(自封装值域)
为这个值域建立取值/设值函数(getting/setting methods),并且只以这些函数来访问值域。
2.Replace Data Value with Object(以对象取代数据值)
将数据项变成一个对象。
3.Change Value to Reference(将实值对象改为引用对象)
将Value Object改为Reference Object。
4.Change Reference to Value(将引用对象改为实值对象)
将Reference Object改为Value Object。
5.Replace Array with Object(以对象取代数组)
以对象替换数组。对于数组的每个元素,以一个值域表示。
6.Duplicate Observed Data(复制[被监视数据])
将[被监视数据]拷贝到一个domain object中。建立一个Observer模式,用以对domain object和GUI Object内的重复数据进行同步控制(Sync)。
7.Change Unidirectional Association to Bidirectional(将单向关联改为双向)
添加一个反向指针,并使修改函数(modifiers)能够同时更新两条连接。
8.Change Bidirectional Association to Unidirectional
将双向关联改为单向。
9.Replace Magic Number with Symboic Constant(以符号常量/字面常量取代魔法数)
创造一个常量,根据其意义为它命名,并将上述的字面数值替换为这个常量。
10.Encapsulate Field(封装值域)
将它声明为private,并提供相应的访问函数(accessors)。
11.Encapsulate Collection(封装群集)
让这个函数返回该群集的一个只读映件(read-only view),并在这个class中提供[添加/移除](add/remove)群集元素的函数。
12.Replace Record with Data Class(以数据取代记录)
为该记录(Record)创建一个[哑]数据对象(dumb data object)。
13.Replace Type Code with Class(以类别取代型别码)
以一个新的class替换该数值型别码(type code)。
14.Replace Type with Subclasses(以子类取代型别码)
以一个subclass取代type code.
15.Replace Type Code with State/Strategy(以state/Strategy取代型别码)
以State Object(专门用来描述状态的对象)取代type code.
16.Replace Subclass with Fields(以值域取代子类)
修改这些函数,使它们返回superclass中的某个(新增)的值域,然后销毁subclass.