diff --git a/notes/pics/dp-factory-method.png b/notes/pics/dp-factory-method.png
new file mode 100644
index 00000000..bd58262b
Binary files /dev/null and b/notes/pics/dp-factory-method.png differ
diff --git a/notes/设计模式 - 工厂方法.md b/notes/设计模式 - 工厂方法.md
index acbc9875..fd2641c2 100644
--- a/notes/设计模式 - 工厂方法.md
+++ b/notes/设计模式 - 工厂方法.md
@@ -1,19 +1,16 @@
## 工厂方法(Factory Method)
-### Intent
-
+### 意图
定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。
-### Class Diagram
-
+### 类图
在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。
下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。
-
-
-### Implementation
+
+### 实现
```java
public abstract class Factory {
abstract public Product factoryMethod();
@@ -48,8 +45,7 @@ public class ConcreteFactory2 extends Factory {
}
```
-### JDK
-
+### JDK 中的应用
- [java.util.Calendar](http://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html#getInstance--)
- [java.util.ResourceBundle](http://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-)
- [java.text.NumberFormat](http://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getInstance--)
@@ -57,3 +53,8 @@ public class ConcreteFactory2 extends Factory {
- [java.net.URLStreamHandlerFactory](http://docs.oracle.com/javase/8/docs/api/java/net/URLStreamHandlerFactory.html#createURLStreamHandler-java.lang.String-)
- [java.util.EnumSet](https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html#of-E-)
- [javax.xml.bind.JAXBContext](https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXBContext.html#createMarshaller--)
+
+## 参考资料
+
+- 弗里曼. Head First 设计模式 [M]. 中国电力出版社, 2007.
+- Gamma E. 设计模式: 可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.