行为型模式之迭代器模式

原创 2018年04月15日 12:28:14
#include <iostream>
using namespace std;
typedef int Object;
#define SIZE 5

class MyIterator
{
public:
	virtual void next() = 0;
	virtual Object CurrentItem() = 0;
	virtual bool isDone() = 0;
};

class Aggreate
{
public:
	virtual int getSize() = 0;
	virtual MyIterator *CreatIterator() = 0;
	virtual Object getItem(int index) = 0;

};

class ConcreteIterator :public MyIterator
{
public:
	ConcreteIterator(Aggreate*aggreate)
	{
		m_aggreate = aggreate;
		current_index = 0;
	}

	virtual void next()
	{
		current_index++;
	}

	virtual Object CurrentItem()
	{
		return m_aggreate->getItem(current_index);
	}

	virtual bool isDone()
	{
		return current_index == m_aggreate->getSize();
	}

private:
	int current_index;
	Aggreate *m_aggreate;
};

class ConcreteAggreate :public Aggreate
{
public:
	ConcreteAggreate()
	{
		for (int i = 0; i < SIZE; i++)
		{
			object[i] = i + 100;
		}
	}
	virtual int getSize()
	{
		return SIZE;
	}

	virtual MyIterator *CreatIterator()
	{
		return new ConcreteIterator(this);
	}

	virtual Object getItem(int index)
	{
		return object[index];
	}

private:
	Object object[5];
};

void main()
{
	ConcreteAggreate *obj = new ConcreteAggreate;

	ConcreteIterator *it = new ConcreteIterator(obj);
	
	for (; !(it->isDone()); it->next())
	{
		cout << it->CurrentItem() << " ";
	}

	delete it;
	delete obj;
}

运行结果:


设计模式17——行为型模式之迭代器模式

定义:迭代器模式(IteratorPattern),提供一种方法顺序访问一个聚合对象中各个元素,而又暴露无遗该对象的内部表示。 类型:对象行为型模式 概述:      正如定义所言,迭代器是为解决更好...
  • feihe027
  • feihe027
  • 2014-02-26 18:17:24
  • 994

设计模式(10) 迭代器模式--行为型

定义迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示 何时使用: 1)需要扩展一个类的功能,或给一个类增加附加责任。 2)...
  • gycool21
  • gycool21
  • 2017-08-07 22:26:28
  • 108

设计模式(行为型)之迭代器模式(Iterator Pattern)

在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“ 同一种算法在多种集合对象上...
  • yanbober
  • yanbober
  • 2015-05-05 09:25:51
  • 2974

C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式 (Level 300)

  • 2008年09月16日 14:42
  • 6.73MB
  • 下载

(行为型模式) Iterator 迭代器模式

  • 2012年09月29日 23:50
  • 171KB
  • 下载

行为型模式-迭代器模式

迭代器模式 迭代模式又叫游标(cursor)模式,提供一种方法访问一个容器对象中各个元素,又不暴露该对象的内部细节。   迭代器模式角色 抽象迭代器(Iterator)角色:定义访问和...
  • hsgao_water
  • hsgao_water
  • 2015-07-30 11:24:58
  • 137

行为型模式——迭代器模式

概述 迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 迭代器模式属于行为...
  • qq_36982160
  • qq_36982160
  • 2018-03-25 21:27:32
  • 7

行为型模式--迭代器模式

1.迭代器角色定义了遍历的接口,但是没有规定由谁来控制迭代。在Java collection的应用中,是由客户程序来控制遍历的进程,被称为外部迭代器;还有一种实现方式便是由迭代器自身来控制迭代,被称为...
  • scyatcs
  • scyatcs
  • 2014-10-24 16:31:53
  • 383

设计模式之行为型模式

  • 2015年11月24日 20:22
  • 8.6MB
  • 下载

Command命令(行为型模式)

耦合与变化 耦合是软件不能抵御变化灾难的根本性原因,不仅实体对象与实体对象之间存在耦合关系,实习对象与行为操作之间也存在耦合关系。 动机(Motivation) 在软件构...
  • hjf19790118
  • hjf19790118
  • 2011-10-16 15:17:53
  • 216
收藏助手
不良信息举报
您举报文章:行为型模式之迭代器模式
举报原因:
原因补充:

(最多只允许输入30个字)