diff --git a/notes/重构.md b/notes/重构.md
index 21591bd6..19beeef3 100644
--- a/notes/重构.md
+++ b/notes/重构.md
@@ -668,7 +668,7 @@ Hide Delegate 有很大好处,但是它的代价是:每当客户要使用受
将该数据赋值到一个领域对象中,建立一个 Oberver 模式,用以同步领域对象和 GUI 对象内的重复数据。
-
+
## 7. 将单向关联改为双向关联
@@ -739,7 +739,7 @@ public 字段应当改为 private,并提供相应的访问函数。
类中有一个数值类型码,但它并不影响类的行为,就用一个新类替换该数值类型码。如果类型码出现在 switch 语句中,需要使用 Replace Conditional with Polymorphism 去掉 switch,首先必须运用 Replace Type Code with Subcalss 或 Replace Type Code with State/Strategy 去掉类型码。
-
+
## 14. 以子类取代类型码
@@ -747,7 +747,7 @@ public 字段应当改为 private,并提供相应的访问函数。
有一个不可变的类型码,它会影响类的行为,以子类取代这个类型码。
-
+
## 15. 以 State/Strategy 取代类型码
@@ -757,7 +757,7 @@ public 字段应当改为 private,并提供相应的访问函数。
和 Replace Type Code with Subcalsses 的区别是 Replace Type Code with State/Strategy 的类型码是动态可变的,前者通过继承的方式来实现,后者通过组合的方式来实现。因为类型码可变,如果通过继承的方式,一旦一个对象的类型码改变,那么就要改变用新的对象来取代旧对象,而客户端难以改变新的对象。但是通过组合的方式,改变引用的状态类是很容易的。
-
+
## 16. 以字段取代子类
@@ -765,7 +765,7 @@ public 字段应当改为 private,并提供相应的访问函数。
各个子类的唯一差别只在“返回常量数据”的函数上。
-
+
# 八、简化条件表达式
@@ -897,7 +897,8 @@ double getSpeed() {
}
```
-
+
+
## 7. 引入 Null 对象
@@ -1059,7 +1060,7 @@ double finalPrice = discountedPrice (basePrice);
以一个对象取代这些参数。
-
+
## 10. 移除设值函数