diff --git a/notes/设计模式.md b/notes/设计模式.md
index 9c03f64e..45ab7212 100644
--- a/notes/设计模式.md
+++ b/notes/设计模式.md
@@ -20,7 +20,7 @@
* [10. 访问者模式](#10-访问者模式)
* [11. 空对象模式](#11-空对象模式)
* [四、结构型](#四结构型)
- * [1. 适配器](#1-适配器)
+ * [1. 适配器模式](#1-适配器模式)
* [2. 桥接模式](#2-桥接模式)
* [3. 组合模式](#3-组合模式)
* [4. 装饰者模式](#4-装饰者模式)
@@ -50,7 +50,7 @@
私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。
-
+
### 实现
@@ -203,7 +203,7 @@ public class Singleton implements Serializable{
简单工厂不是设计模式,更像是一种编程习惯。它把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个子类来实例化。
-
+
这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。因为客户类往往有多个,如果不使用简单工厂,所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。
@@ -281,7 +281,7 @@ public class Client {
下图中,Factory 有一个 doSomethind() 方法,这个方法需要用到一组产品对象,这组产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。
-
+
### 实现
@@ -337,7 +337,7 @@ public class ConcreteFactory2 extends Factory {
### 类图
-
+
抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂模式只是用于创建一个对象,这和抽象工厂模式有很大不同。
@@ -584,12 +584,70 @@ public class Client {
# 四、结构型
-## 1. 适配器
+## 1. 适配器模式
### 意图
把一个类接口转换成另一个用户需要的接口。
+
+
+### 类图
+
+
+
+### 实现
+
+鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。
+
+要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子!
+
+```java
+public interface Duck {
+ void quack();
+}
+```
+
+```java
+public interface Turkey {
+ void gobble();
+}
+```
+
+```java
+public class WildTurkey implements Turkey {
+ @Override
+ public void gobble() {
+ System.out.println("gobble!");
+ }
+}
+```
+
+```java
+public class TurkeyAdapter implements Duck {
+ Turkey turkey;
+
+ public TurkeyAdapter(Turkey turkey) {
+ this.turkey = turkey;
+ }
+
+ @Override
+ public void quack() {
+ turkey.gobble();
+ }
+}
+```
+
+```java
+public class Client {
+ public static void main(String[] args) {
+ Turkey turkey = new WildTurkey();
+ Duck duck = new TurkeyAdapter(turkey);
+ duck.quack();
+ }
+}
+```
+
### JDK
- [java.util.Arrays#asList()](http://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#asList%28T...%29)
diff --git a/pics/0f754c1d-b5cb-48cd-90e0-4a86034290a1.png b/pics/0f754c1d-b5cb-48cd-90e0-4a86034290a1.png
new file mode 100644
index 00000000..57dd8bf1
Binary files /dev/null and b/pics/0f754c1d-b5cb-48cd-90e0-4a86034290a1.png differ
diff --git a/pics/1818e141-8700-4026-99f7-900a545875f5.png b/pics/1818e141-8700-4026-99f7-900a545875f5.png
new file mode 100644
index 00000000..1523ad79
Binary files /dev/null and b/pics/1818e141-8700-4026-99f7-900a545875f5.png differ
diff --git a/pics/3d5b828e-5c4d-48d8-a440-281e4a8e1c92.png b/pics/3d5b828e-5c4d-48d8-a440-281e4a8e1c92.png
new file mode 100644
index 00000000..2f39530c
Binary files /dev/null and b/pics/3d5b828e-5c4d-48d8-a440-281e4a8e1c92.png differ
diff --git a/pics/562f2844-d77c-40e0-887a-28a7128abd42.png b/pics/562f2844-d77c-40e0-887a-28a7128abd42.png
new file mode 100644
index 00000000..b74f69b7
Binary files /dev/null and b/pics/562f2844-d77c-40e0-887a-28a7128abd42.png differ
diff --git a/pics/c79da808-0f28-4a36-bc04-33ccc5b83c13.png b/pics/c79da808-0f28-4a36-bc04-33ccc5b83c13.png
new file mode 100644
index 00000000..91e2c144
Binary files /dev/null and b/pics/c79da808-0f28-4a36-bc04-33ccc5b83c13.png differ
diff --git a/pics/e82e0454-4ece-435e-945f-90bc0d37bf44.png b/pics/e82e0454-4ece-435e-945f-90bc0d37bf44.png
new file mode 100644
index 00000000..74a9f8b6
Binary files /dev/null and b/pics/e82e0454-4ece-435e-945f-90bc0d37bf44.png differ