11,Encapsulate Collection (封装集合)
现象:有个函数返回一个集合
要点:让这个函数返回该集合的一个只读副本,并在这个类中提供添加/移除集合元素的函数。
12,Replace Record With Data Class (以数据类取代记录)
现象:你需要面对传统编程环境中的记录结果
要点:为该记录创建一个“哑”数据对象。
13,Replace Type Code With Class (以类取代类型码)
现象:类之中有一个数值类型码,但它并不影响类的行为
要点:以一个新的类替换该数值类型码。
14,Replace Type Code With Subclasses (以子类取代类型码)
现象:你有一个不可变的类型码,它会影响类的行为
要点:以子类取代这个类型码。
15,Replace Type Code With State/Strategy (以 State/Strategy 取代类型码)
现象:你有一个类型码,它会影响类的行为,但你无法通过 继承手法消除它。
要点:以状态对象取代类型码。
16,Replace Subclass With Fields (以字段取代子类)
现象:你的各个子类的唯一差别只在“返回常量数据”的函数身上
要点:修改这些函数,使它们返回超类中的某个新增字段,然后销毁子类。