`
xieyaxiong
  • 浏览: 41104 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

design pattern——迭代器模式

 
阅读更多

针对问题:提供统一接口访问集合,屏蔽集合内部数据的访问和数据结构。提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。

 

 

 

 

 

迭代器模式的结构图:

 


 

 

 

 

迭代器模式的实现代码:

 

/**
 * 迭代接口
 * @author bruce
 *
 */
public interface Iterator {
	
	public Object first();
	
	public Object next();
	
	public boolean isDone();
	
	public Object currentItme();

}




/**
 * 集合抽象类
 * @author bruce
 *
 */
public abstract class Aggregate {
	
	public abstract Iterator createIterator();

}





/**
 * 集合实现类
 * @author bruce
 *
 */
public class ConcreteAggregate extends Aggregate{
	
	private Object[] objects;
	
	public ConcreteAggregate(Object[] objects){
		this.objects=objects;
	}

	@Override
	public Iterator createIterator() {
		return new ConcreteIterator(this);
	}
	
	/**
	 * 迭代器应作为集合类的私有内部类来实现。这样可以访问集合,不需要以下接口。
	 * @return
	 */
	public Object[] getObjects(){
		return objects;
	}
	
}





/**
 * 迭代器实现
 * @author bruce
 *
 */
public class ConcreteIterator implements Iterator{
	
	private ConcreteAggregate aggregate;
	
	private int current=0;
	
	public ConcreteIterator(ConcreteAggregate aggregate){
		this.aggregate=aggregate;
	}

	public Object currentItme() {
		return getObjects()!=null && getObjects().length>current?getObjects()[current]:null;
	} 

	public Object first() {
		return getObjects()!=null && getObjects().length>0?getObjects()[0]:null;
	}

	public boolean isDone() {
		return getObjects()!=null && getObjects().length>0?current>=getObjects().length:true;
	}

	public Object next() {
		// TODO Auto-generated method stub
		return isDone()?null:getObjects()[current++];
	}
	
	
	/**
	 * 迭代器应该实现在集合内部,不需要些接口
	 * @return
	 */
	private Object[] getObjects(){
		return aggregate.getObjects();
	}
	
}






/**
 * 测试类
 * @author bruce
 *
 */
public class Client {
	
	public static void main(String[] args) {
		Object[] objects=new Object[]{"A","B","C"};
		
		ConcreteAggregate aggregate=new ConcreteAggregate(objects);
		Iterator iterator=aggregate.createIterator();
		while(!iterator.isDone()){
			Object object=iterator.next();
			System.out.println(object);
		}
		/**
		 * output:
		   A
		   B
		   C

		 */
	}

}
 

 

 

 

  • 大小: 6.7 KB
分享到:
评论

相关推荐

    design-pattern-java.pdf

    自定义语言的实现——解释器模式(五) 自定义语言的实现——解释器模式(六) 迭代器模式-Iterator Pattern 遍历聚合对象中的元素——迭代器模式(一) 遍历聚合对象中的元素——迭代器模式(二) 遍历聚合对象中的...

    GoF的经典著作设计模式(Design Pattern)

    16. **迭代器模式**:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 17. **中介者模式**:定义一个中介对象来简化原本复杂的对象间交互,使得对象之间松耦合。 18. **备忘录模式**:在不破坏封装性...

    Design Pattern FrameworkTM

    - **第 9 章:迭代器模式与组合模式**(页码:15) - 介绍了迭代器模式和组合模式的核心概念。 - 展示了这两种模式在 .NET 应用中的具体实现。 - **第 10 章:状态模式**(页码:17) - 解释了状态模式的工作原理...

    GOF之23种设计模式的C#实现:DesignPattern.zip

    - 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 观察者模式(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会...

    HeadFirst Design Pattern

    3. 行为型模式:这类模式主要关注对象间的交互和责任分配,如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、备忘录模式(Memento...

    design-pattern(设计模式,包括创建型、结构型、行为型三大类共23种常见的设计模式和J2EE常见设计模式等).zip

    - 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 中介者模式:用一个中介对象封装一系列对象之间的交互,降低它们之间的耦合。 - 观察者模式:定义对象间的一对多依赖关系,当一个...

    模式举例代码——设计模式和举例代码

    - 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 观察者模式:定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - 状态...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    本书还附带了一些基础类库的介绍,例如列表(List)、迭代器(Iterator)、列表迭代器(ListIterator)、点(Point)、矩形(Rect)等,这些都是在实现设计模式时常用的数据结构。 #### 十一、参考文献与索引 **参考文献与...

    Design Pattern

    - 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 中介者模式(Mediator):定义一个中介对象来封装一系列对象之间的交互,降低系统的耦合度。 - 备忘录模式(Memento)...

    设计模式 Head First

    #### 第9章:良好的集合管理——迭代器模式和组合模式 迭代器模式提供了一种方法来顺序访问聚合对象中的一系列数据,而不暴露其内部表示。组合模式则将对象组织到树形结构中以表示部分整体层次结构,使得客户端可以...

    gof设计模式中英双语版

    3. 行为型模式:这类模式主要关注对象间如何交互和分配责任,例如责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。这些模式...

    Head First Design Patterns

    - **行为型模式**:包括策略模式、模板方法模式、观察者模式、迭代器模式、访问者模式、命令模式、备忘录模式、状态模式、解释器模式等。这些模式侧重于对象间的交互方式。 #### 五、结语 《Head First Design ...

    设计模式 高清 完整版

    - **行为型模式**:关注对象间的职责分配,如策略模式、模板方法模式、观察者模式、命令模式、迭代器模式、中介者模式、备忘录模式、状态模式、访问者模式和解释器模式。 #### 设计模式的价值 设计模式的价值不仅...

    Design Patterns,By Gamma, Helm, Johnson and Vlissides(Addison-Wesley)

    包括:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式等。 3. **UML(Unified Modeling Language)**: - 定义:统一建模...

    think in patterns

    迭代器模式提供了一种方法来访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 ##### 3.6 适配器模式 适配器模式将一个类的接口转换成客户希望的另一个接口。适配器让原本由于接口不兼容而不能一起...

Global site tag (gtag.js) - Google Analytics