[23种设计模式汇总]行为型模式_访问者模式

[23种设计模式汇总]行为型模式_访问者模式

ID:40313998

大小:130.50 KB

页数:5页

时间:2019-07-30

[23种设计模式汇总]行为型模式_访问者模式_第1页
[23种设计模式汇总]行为型模式_访问者模式_第2页
[23种设计模式汇总]行为型模式_访问者模式_第3页
[23种设计模式汇总]行为型模式_访问者模式_第4页
[23种设计模式汇总]行为型模式_访问者模式_第5页
资源描述:

《[23种设计模式汇总]行为型模式_访问者模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、访问者模式一、访问者模式简介(BriefIntroduction)表示一个作用于某对象结构中的元素操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作,它把数据结构和作用于结构上的操作之间的耦合性解脱开,使的操作结合可以相对自由地演化。优点是增加新的操作很容易,因为增加一个新的操作就意味着增加一个新的访问者,访问者模式将有关的行为集中到一个访问对象中。二、解决的问题(WhatToSolve)      访问者模式的目的是要把处理从数据结构分离出来。如果系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式是个不错的选择,因

2、为访问者模式使的算法操作的增加变的容易。相反,如果系统的数据结构不稳定,易于变化,则此系统就不适合使用访问者模式了。三、访问者模式分析(Analysis)1、访问者模式结构Visitor:为对象结构中Element的每一个子类声明一个Visitor操作。ConcreteVisitor1、ConcreteVisitor2:具体的访问者,实现父类Visitor的操作。每个操作实现算法的一部分,而该算法片段仍是对应与结构中对象的类。ObjectStructure:枚举它的元素,可以提供一个高层的接口以允许访问者访问它的元素。Element:定义一个Ac

3、cept操作,它以一个访问者为参数。ConcreteElementA、ConcreteElementB:具体元素,实现父类Element的方法Accept。2、源代码1、访问者抽象类VisitorpublicabstractclassVisitor{publicabstractvoidVisitConcreteElementA(ConcreteElementAconcreteElementA);publicabstractvoidVisitConcreteElementB(ConcreteElementBconcreteElementB);}2、

4、具体访问者ConcreteVisitor1、ConcreteVisitor2publicclassConcreteVisitor1:Visitor{publicoverridevoidVisitConcreteElementA(ConcreteElementAconcreteElementA){Console.WriteLine("{0}访问{1}",this.GetType().Name,concreteElementA.GetType().Name);}publicoverridevoidVisitConcreteElementB(Concr

5、eteElementBconcreteElementB){Console.WriteLine("{0}访问{1}",this.GetType().Name,concreteElementB.GetType().Name);}}publicclassConcreteVisitor2:Visitor{publicoverridevoidVisitConcreteElementA(ConcreteElementAconcreteElementA){Console.WriteLine("{0}访问{1}",this.GetType().Name,conc

6、reteElementA.GetType().Name);}publicoverridevoidVisitConcreteElementB(ConcreteElementBconcreteElementB){Console.WriteLine("{0}访问{1}",this.GetType().Name,concreteElementB.GetType().Name);}3、定义一个Accept操作,它以一个访问者为参数publicabstractclassElement{publicabstractvoidAccept(Visitorvisit

7、or);}4、具体元素ConcreteElementA、ConcreteElementBpublicclassConcreteElementA:Element{publicoverridevoidAccept(Visitorvisitor){visitor.VisitConcreteElementA(this);}publicvoidOperationA(){}}publicclassConcreteElementB:Element{publicoverridevoidAccept(Visitorvisitor){visitor.VisitCon

8、creteElementB(this);}publicvoidOperationB(){}}5、对象结构ObjectStructurep

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。