- 浏览: 612038 次
- 性别:
- 来自: 卡哇伊
文章分类
- 全部博客 (299)
- C# (25)
- Java (1)
- WinForm (0)
- Asp.Net (86)
- Jsp (2)
- Php (1)
- Web Service (0)
- Desgin Patterns (19)
- Data Structure & Algorithms (1)
- SQLserver (41)
- Mysql (0)
- Oracle (2)
- Javascript (50)
- Ajax (10)
- Jquery (1)
- Flex (0)
- Regular Expression (5)
- DIV+CSS+XHTML+XML (18)
- Software Test (0)
- Linux (0)
- Utility (17)
- Net Digest (4)
- windows 2003 (10)
- Other (4)
- English (1)
- IT Term (1)
最新评论
-
w497480098h:
学习了 很好谢谢
SQL Server下无限多级别分类查询解决办法(简单查询树形结构数据库表) -
main_fun:
确实不错
iframe自适应高度 -
jveqi:
...
DBA -
mxcie:
其它版本没有确认,今天使用vs2003时,其.sln文件也需要 ...
彻底删除项目的VSS源代码管理信息 -
moneyprosper:
就只有IE支持,火狐和谷歌都不支持此种方法。正在寻找中。。。
从父页面读取和操作iframe中内容方法
意图
提供一种方法顺序访问一个聚合对象中各个元素,而又不许暴露该对象的内部表示.
什么叫聚合对象--->就是类似与数组或集合的对象.
其实就是将一些对象放到一个聚合中,来一起组织它们,来遍历它,或者得到当前的某个元素.
适用性
1.访问一个聚合对象的内容而无须暴露它的内部表示.
聚合对象可能是数组或者集合,我们在迭代聚合对象的时候不需要知道它底层是用什么来表示的,也就是不需要知道用数组还是集合来表示的.不需要去关心它,我们只需要去迭代它,获得我想知道的元素.向使用者屏蔽了底层的一种实现机制.然后我们通过很简单的方法,把聚合对象里的内容得到.
2.支持对聚合对象的多种遍历.
从前往后遍历,从后往前遍历........
3.为遍历不同的聚合结构提供一个统一的接口(既,支持多态迭代)
构成
1.抽象迭代器(Iterator)角色:此抽象角色定义出遍历元素所需的接口.
比如:我要得到聚合对象第一个元素,得到最后一个元素,得到当前元素.当前元素的下一个元素提供了这些规范.
2.具体迭代器(ConcreteIterator)角色:此角色实现了Iterator接口,并保持迭代过程中游标的位置.
当我们去遍历或者迭代一个聚合对象的时候,我们必须要有一种机制去保证,我们当前迭代到什么位置上了,我们是否还有能力继续去迭代,也就是这个聚合对象是否已经遍历完了,我们需要一种这样的机制来控制,这种机制可以通过游标的方式来控制.游标就相当于一个数组的索引,或者是集合的下标.
3.聚集(Aggregate)角色:此抽象角色给出创建迭代器(Iterator)对象的接口迭代角色是对聚集迭代的,它们是有密切的关联的因此我们通过具体聚集角色去创建相应的具体迭代器角色.
4.具体聚集(ConcreteAggregate)角色:实现了创建迭代器(Iterator)对象的接口,维持了一组对象引用的一个聚集对象,返回一个合适的具体迭代器实例.
创建的具体迭代器角色就可以迭代相应的具体聚集角色,具体的迭代器角色一定要知道它是对谁来进行迭代的.具体的聚集角色和具体的迭代器角色是互相关联的一种关系,具体聚集角色创建具体迭代角色,然而具体迭代角色又知道对谁来进行迭代.
5.客户端(Client)角色:持有对聚集及其迭代子对象的引用,调用迭代子对象的迭代接口,也有可能通过迭代器操作聚集元素的增加和删除.
客户端角色可以创建聚集角色和相应的迭代器角色,然后通过迭代器角色去迭代相应的聚集角色.
ClassDiagram:
SequenceDiagrm:
class Client { static void Main(string[] args) { ConcreteAggregate aggregate = new ConcreteAggregate(); aggregate[0] = "Item A"; aggregate[1] = "Item B"; aggregate[2] = "Item C"; aggregate[3] = "Item D"; Iterator iterator = aggregate.CreateIterator(); Console.WriteLine("First Element:" + iterator.First()); Console.WriteLine("Next Element:" + iterator.Next()); Console.WriteLine("Current Element" + iterator.CurrentItem()); Console.WriteLine("---------------------------------------"); while (iterator.HasNext()) { Console.WriteLine(iterator.Next()); } Console.ReadKey(); } } /// <summary> /// 迭代器角色 /// </summary> abstract class Iterator { public abstract Object First(); public abstract Object Next(); public abstract Object CurrentItem(); public abstract bool HasNext(); } ///<summary> /// 具体迭代器角色 ///</summary> class ConcreteIterator : Iterator { private int current = 0; ConcreteAggregate aggregate; public ConcreteIterator(ConcreteAggregate aggregate) { this.aggregate = aggregate; } public override object CurrentItem() { return aggregate[current]; } public override object First() { return aggregate[0]; } public override object Next() { return aggregate[current++]; } public override bool HasNext() { return current != aggregate.Count; } } /// <summary> /// 聚集角色 /// </summary> abstract class Aggregate { public abstract Iterator CreateIterator(); } /// <summary> ///具体的聚集角色 /// </summary> class ConcreteAggregate : Aggregate { private ArrayList list = new ArrayList(); public override Iterator CreateIterator() { return new ConcreteIterator(this); } public int Count { get { return list.Count; } } public object this[int index] { get { return list[index]; } set { list.Insert(index, value); } } }
发表评论
-
AbstractFactoryPattern(二)
2009-05-01 21:42 714关于抽象工厂(Abstract F ... -
VisitorPattern
2009-05-01 19:20 853意图表示一个作用于某 ... -
MementoPattern
2009-05-01 16:10 725意图在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之 ... -
MediatorPattern
2009-05-01 11:16 706意图用一个中介对象封装一系列的对象交互.中介者使各对象不需要显 ... -
Statepattern
2009-04-30 13:45 806意图允许一个对象在其 ... -
Chain of Responsibility Pattern
2009-04-28 23:23 864意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者之 ... -
InterpreterPattern
2009-04-28 14:43 862意图给定一个语言之后,解释器模式可以定义出其文法的一种表示,并 ... -
CommandPattern
2009-04-26 13:35 700意图:将一个请求封装为 ... -
StrategyPattern
2009-04-25 19:08 752策略模式(Strategy Pattern) 中体现了两个非常 ... -
TemplateMethodPattern
2009-04-25 13:24 837TemplateMethodPattern:定义一个操作中算法 ... -
PrototypePattern
2009-04-23 15:46 797意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的 ... -
追MM与23种设计模式
2009-04-21 15:13 6931、FACTORY—追MM少不了请 ... -
AbstractFactoryPattern
2009-04-21 13:23 750意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定 ... -
FactoryMethodPattern
2009-04-19 22:20 870工厂方法(FactoryMethod ... -
ObserverPattern
2009-03-27 17:40 807观察者模式又叫做发布- ... -
SimpleFactoryPattern
2009-03-26 00:57 795工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决 ... -
Builder Pattern
2009-03-21 18:47 1396建造者(Builder)模式 ... -
Singleton Pattern
2009-03-16 16:50 989单件模式:(Singleton pattern) 1.目的 1 ...
相关推荐
迭代器模式(IteratorPattern)是设计模式中的一种行为模式,它提供了一种顺序访问聚合对象元素的方法,同时又不暴露其底层表示。这种模式允许我们遍历集合对象的元素,而无需暴露其内部结构。在Java、C#等面向对象...
迭代器模式(Iterator Pattern)是设计模式中的一种行为模式,它允许顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式提供了一种方法,可以顺序地访问一个聚合对象中的各个元素,而又...
"Iterator Pattern--Biscuit.png"可能是对迭代模式的可视化解释,通过图片可以更直观地看到各个角色及其交互。其他文件如`.classpath`、`.project`、`build.xml`、`Workspace.sws`等是Eclipse项目配置文件,它们与...
- **抽象迭代器(Iterator)**:定义了遍历元素的接口,包括初始化、判断是否还有下一个元素、获取当前元素和移动到下一个元素等方法。 - **具体迭代器(ConcreteIterator)**:实现了抽象迭代器接口,具体实现如何...
迭代器模式(Iterator Pattern) 基本介绍 迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。 提供一种可以遍历聚合对象的方式。又...
迭代器模式(Iterator Pattern)是设计模式中行为模式的一种,主要解决访问聚合对象内容的问题,使得我们可以在不暴露其内部结构的情况下,顺序访问一个聚合对象的各个元素,而又不破坏其内部结构。这个模式在Java、...
在给定的资源中,`IteratorPattern.cpp`和`IteratorPattern.h`是实现迭代器模式的源代码文件。通常,`IteratorPattern.cpp`包含类的实现细节,而`IteratorPattern.h`则包含类的声明和接口。这两个文件可能会定义以下...
Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露...
14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、...
本文以实例形式简单简述了C#迭代器模式的实现方法,分享给大家供大家参考。具体方法如下: 一般来说,迭代器模式的需求来自:需要对一些集合进行迭代,而迭代的方式可能有很多种。 说到迭代,动作大致包括设置第一个...
备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者模式(Visitor ...
迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)是设计模式中的两种重要结构型模式,它们在软件设计中有着广泛的应用。这两种模式都属于GoF(Gang of Four)设计模式,旨在解决特定的问题,提升代码...
迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式(Chain of Responsibility Pattern) 20. 备忘录模式...
迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式(Chain of Responsibility Pattern) ...
为了遍历这些容器中的元素,Java引入了迭代器模式(Iterator Pattern),这是一种常用的设计模式,它提供了一种访问聚合对象的方法,而无需暴露其内部表示。本文将详细解析Iterator模式在Java中的实现原理,并通过...
15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式(Chain of Responsibility Pattern) 20. ...
迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式(Memento Pattern) 观察者模式(Observer Pattern) 状态模式(State Pattern) 空对象模式(Null Object Pattern) 策略模式...
4. **迭代器模式(Iterator Pattern)**: 迭代器模式是一种行为型设计模式,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。通过迭代器,用户可以遍历集合中的所有元素,而无需了解集合的内部...