- IteratorPattern在GoF的定义:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。
- 实现:遍历任何对象集合
- 同时:降低类之间的耦合度,提高复用性
- 相关Pattern: Visitor Pattern, Composite Pattern,Factory Method Pattern(有时会用到)
- JDK中使用了Iterator pattern的类有:iterator
以UML类图的形式,Iterator Pattern可表示为:(以Java为实现语言)
- 通过Iterator,借助在ConcreteInterator中定义的实现,在遍历Entity对象组成的集合时达到了屏蔽ConcreateAggregate中具体实现的目的,自然就降低了类之间的耦合度,提高了复用率。不论ConcreteAggregate中Entity的集合是List或者是Vector,或是Entity[],对于外界调用者来说都没有任何影响。
在Iterator pattern之上遍历集合对象时,调用实现变得十分通用:
// ---code----
ConcreteAggregate object = new ConcreteAggregate();
Iterator iterator = object.createIterator();
while(iterator.hasNext())
{
Object entity = iterator.next();
........
}
- Aggregate和Iterator类能不能改写成Interface而不使用Abstract Class ?
Aggregate类不能改写为Interface,因为在Aggregate中实现了createIterator()方法,
如果改写成Interface将不能在Aggregate中实现createIterator(),createIterator()的
实现就必须放在ConcreteAggregate中,显然,这样做是十分多余而且是违背所谓的
OO原则的。
Iterator类不能改写为Interface的理由与Aggregate不能改写为Interface是一样的,
Iterator中肩负着实现hashNext()的使命。
当然,Iterator与Aggregate是有不同之处的,Iterator肩负的任务并没有Aggregate那样重,
因为就方法hasNext()和next()所完成的业务而言,Iterator和ConcreteIterator之间是一致的。
而方法CreateIterator()如果放在ConcreteAggregate而言,就是纯粹的浪费了。
- 大小: 25.8 KB
分享到:
相关推荐
所谓Iterator模式,即是Iterator为不同的容器提供一个统一的访问方式。本文以java中的容器为例,模拟Iterator的原理。 参考:马士兵 Java设计模式 Iterator 1.首先定义一个容器Collection接口. 2.定义一个Iterator...
所谓Iterator模式,即是Iterator为不同的容器提供一个统一的访问方式。本文以java中的容器为例,模拟Iterator的原理。需要的朋友可以参考下
设计模式C++学习之迭代器模式(Iterator)
C#面向对象设计模式 (行为型模式) Iterator 迭代器模式 视频讲座下载
设计模式之_Iterator_00_源码
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
迭代器(Iterator) 用意:可以顺序地访问一个集合中的元素而不必暴露集合中的内部表象。
IteratorPattern 迭代设计模式
23种设计模式之二十二(行为模式)Iterator模式
C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式 (Level 300)
【Java设计模式】(1)迭代器模式Iterator(代码)
Head First 设计模式 (九) 迭代器与组合模式(Iterator & Composite pattern) C++实现
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源分。敬请期待。 这是第18节:行为型...
设计模式精解-GoF 23 种设计模式解析附 C++实现源码 目 录 引 言 0.1 设计模式解析(总序) 0.2 设计模式解析后记 0.3 与作者联系 1 创建型模式 ...3.10 Iterator模式 3.11 Interpreter模式 4 说明
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式 C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式 C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility ...
迭代器模式(Iterator Pattern)是设计模式中的一种行为模式,它允许顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式提供了一种方法,可以顺序地访问一个聚合对象中的各个元素,而又...
23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...
iterator-demo 迭代器设计模式demo