Iterator和Vistor的描述见http://www.iteye.com/topic/21293。
啥时候用Iterator?啥时候用Vistor?从我的角度看来Vistor是为了解决Iterator的问题而出现的。Iterator有啥问题呢?设想这么一套类体系:类很多,几百个,类继承层次和关系也很多,这个时候,用Iterator,如下:
while ( (node = iter.next()) != null){
.....
node.method1();
.....
}
OK,处理方法是写在各个node里的,接下来,我想要为这套类体系加一个方法method2(),完了,严重的问题出现了,几百个类发生变动。如果我不把方法method2()写在node里呢?你的Iterator的处理方法会有一大堆的if/else来根据node的不同来做相应的处理,这个肯定同样也是不可取的。怎么办?Visitor出现了,它怎么解决这个问题?呵呵,它只不过帮你把方法挪个位置,当你需要在类体系中加一个method2()方法时,你实际上需要把所有的method2()方法搬到一个新建的Visitor中。
总结:当需要修改类体系增加遍历所需方法时,就增加一个Visitor,Visitor是为了维护类体系的稳定性而产生的模式,也这是它比Iterator优越的地方。
分享到:
- 2007-09-11 21:05
- 浏览 1470
- 评论(0)
- 论坛回复 / 浏览 (0 / 1761)
- 查看更多
相关推荐
访客模式 作者:Brian ( ) 您必须一组两个一组地工作 迭代器类 您已经获得了四个文件,其中包含以下五个迭代器类的声明和定义: 迭代器:这是用于定义所有其他迭代器类的接口的基类 NullIterator:此迭代器由...
C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式 C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式 C#面向对象设计模式纵横谈(20):(行为型模式) Chain Of Responsibility ...
您已经提供了一个迭代器类Iterator ,用户可以创建它来遍历整个表达式树。 该迭代器的特殊之处在于它多次访问树的每个节点。 没有子节点的节点将被访问一次。 有一个孩子的节点被访问两次(访问孩子之前和之后)。 ...
public void accept(Visitor visitor) { visitor.visitString(this); } } // 其他Visitable类类似实现,如VisitableFloat ``` 然后,我们可以创建一个具体的`Visitor`实现,比如`PrintingVisitor`,它会根据对象...
行为型模式关注对象之间的交互和责任分配,包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、命令(Command)、迭代器(Iterator)、访问者(Visitor)、备忘录(Memento)、状态(State)...
由你掌握 重构初体验 从企业的运行价值链说起 使用极限编程改善项目的设计和灵活性 从实例谈OOP、工厂模式和重构 从实例谈Adapter 模式 从Adapter模式到Decorator模式 Visitor模式之...
Chapter 14: Iterator Chapter 15: Visitor Chapter 16: Decorator Chapter 17: Chain of Responsibility Chapter 18: Template Method Chapter 19: Strategy Chapter 20: Command Chapter 21: Flyweight Chapter 22...
Structural-bridge,Structural-proxy,Structural-composite,Structural-adapter,Structural-flyweightStructural-decorator,Structural-facade,behavioral-visitor,behavioral-strategy,behavioral-memento...
adapter bridge build chainOfResp command decorator factory iterator mediator observer proxy state visitor 设计模式,java实现,如有纰漏请指正,谢谢
软件设计模式,行为型模式:ChainOf Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template method Visitor
3. 行为型模式:这类模式关注对象间的交互和职责分配,包括策略(Strategy)、模板方法(Template Method)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录...
AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) Singleton ( 单态模式 ) Builder ( 建造者模式 ) Prototype ( 原型模式 ) Adapter ( 适配器模式 ) Bridge ( 桥接模式 ) ...Visitor ( 访问者模式 )
AbstractFactory Adapter Brige Builder ChainOfResponsibility Command Composite Decorator Facade Factory FlyWeight Interpreter Iterator Mediator Memento Observer Prototype ...Visitor
14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、...
如装饰器模式(Decorator)、观察者模式(Observer)、代理模式(Proxy)、桥接模式(Bridge)、责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)...
注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) 生成器模式(Builder) 工厂方法模式(Factory Method) 原型模式(Prototype) 单件模式(Singleton) 结构型: 适配器模式(Adapter) 桥接模式...
Abstract Factory,Builder,Prototype,Singleton ,Adapter_Object,Bridge Composite Decorator Facade Flyweight Proxy ,Chain of Responsibility Command Iterator Mediator Memento ...Visitor
Iterator(迭代模式)、Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、 Mediator(中介模式)、Interpreter(解释器模式)、Strategy(策略模式)、State 、Observer(观察者模式)、...
**C++实现**: 在C++中实现Visitor模式通常涉及定义一个Visitor接口和多个具体的Visitor类。此外,还需要修改Element类,使其接受Visitor的访问。 #### 3.9 Chain of Responsibility模式 **定义**: Chain of ...