diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md"
index cee12101a37bbabd04a726b6db564d776535c9b1..1783c170aa5318823a78f6fa263d34153a40b918 100644
--- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md"
+++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md"
@@ -496,7 +496,80 @@ public class Client {
### 意图
-提供一种一致的访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。
+提供一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。
+
+### 类图
+
+
+
+### 实现
+
+```java
+public interface Aggregate {
+ Iterator createIterator();
+}
+```
+
+```java
+public class ConcreteAggregate implements Aggregate {
+
+ private Integer[] items;
+
+ public ConcreteAggregate() {
+ items = new Integer[10];
+ for (int i = 0; i < items.length; i++) {
+ items[i] = i;
+ }
+ }
+
+ @Override
+ public Iterator createIterator() {
+ return new ConcreteIterator(items);
+ }
+}
+```
+
+```java
+public interface Iterator- {
+ Item next();
+
+ boolean hasNext();
+}
+```
+
+```java
+public class ConcreteIterator
- implements Iterator {
+
+ private Item[] items;
+ private int position = 0;
+
+ public ConcreteIterator(Item[] items) {
+ this.items = items;
+ }
+
+ @Override
+ public Object next() {
+ return items[position++];
+ }
+
+ @Override
+ public boolean hasNext() {
+ return position < items.length;
+ }
+}
+```
+
+```java
+public class Client {
+ public static void main(String[] args) {
+ Aggregate aggregate = new ConcreteAggregate();
+ Iterator iterator = aggregate.createIterator();
+ while (iterator.hasNext()) {
+ System.out.println(iterator.next());
+ }
+ }
+}
+```
### JDK
diff --git a/pics/b0f61ac2-a4b6-4042-9cf0-ccf4238c1ff7.png b/pics/b0f61ac2-a4b6-4042-9cf0-ccf4238c1ff7.png
new file mode 100644
index 0000000000000000000000000000000000000000..73dad48397c2350198b555ce54ea2bfacd75a97c
Binary files /dev/null and b/pics/b0f61ac2-a4b6-4042-9cf0-ccf4238c1ff7.png differ