From ddd10c1aa8da15dc93ac810125ac52c551f370aa Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Mon, 4 Jun 2018 14:53:39 +0800 Subject: [PATCH] auto commit --- notes/设计模式.md | 75 +++++++++++++++++- pics/b0f61ac2-a4b6-4042-9cf0-ccf4238c1ff7.png | Bin 0 -> 18432 bytes 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 pics/b0f61ac2-a4b6-4042-9cf0-ccf4238c1ff7.png diff --git a/notes/设计模式.md b/notes/设计模式.md index cee12101..1783c170 100644 --- a/notes/设计模式.md +++ b/notes/设计模式.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 GIT binary patch literal 18432 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 TCT||}|HuEIqPPDS;{SgEISPVs literal 0 HcmV?d00001