定义 | |
做法 | 针对参数的每一种可能值,新建一个明确函数。 对于"用字面量值作为参数"的函数调用者,将其改为调用新建的明确函数。 |
注意 |
|
保持对象完整(Preserve Whole Object)
title | content |
场景 |
|
意义 | 传递整个记录"的方式能更好地应对变化 |
定义 |
|
做法 |
|
注意 |
|
移除设值函数(Remove Setting Method)
title | content |
场景 | 如果为某个字段提供了设值函数,这就暗示这个字段可以被改变。 如果不希望在对象创建之后此字段还有机会被改变,那就不要为它提供设值函数(同时将该字段声明为不可变) |
意义 | 只能在构造函数中赋值,我"不想让它被修改"的意图会更加清晰,并且可以排除其值被修改的可能性——这种可能性往往是非常大的。 |
定义 | |
做法 | |
注意 |
|
以命令取代函数(Replace Function with Command)
title | content |
场景 |
|
意义 |
|
定义 |
|
做法 | 如果要在作为一等公民的函数和命令对象之间做个选择,95%的时候我都会选函数。 只有当我特别需要命令对象提供的某种能力而普通的函数无法提供这种能力时,我才会考虑使用命令对象。 |
注意 |
|
demo
title | content |
场景 |
|
意义 |
|
定义 |
|
做法 |
|
注意 |
|