设计模式之访问者模式
来源:互联网 发布:守望先锋 伤害数据 编辑:程序博客网 时间:2024/06/09 15:19
描述:访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。
UML类图如下:
测试代码如下:
1、访问者接口类
package com.java.visitor;public interface IVisitor {public void visit(ConcreteElement1 e1);public void visit(ConcreteElement2 e1);}
2、访问者接口实现类
package com.java.visitor;public class Visitor implements IVisitor {@Overridepublic void visit(ConcreteElement1 e1) {e1.doSomething();}@Overridepublic void visit(ConcreteElement2 e2) {e2.doSomething();}}
package com.java.visitor;public abstract class Element {public abstract void doSomething();public abstract void accept(IVisitor visitor);}
4、具体元素类
package com.java.visitor;public class ConcreteElement1 extends Element {@Overridepublic void doSomething() {System.out.println("朋友张三...");}@Overridepublic void accept(IVisitor visitor) {visitor.visit(this);}}
package com.java.visitor;public class ConcreteElement2 extends Element {@Overridepublic void doSomething() {System.out.println("朋友李四...");}@Overridepublic void accept(IVisitor visitor) {visitor.visit(this);}}
5、元素生成器
package com.java.visitor;import java.util.Random;public class ObjectStructure {public static Element createElement(){Random rand = new Random();if(rand.nextInt(100) > 50){return new ConcreteElement1();}else{return new ConcreteElement2();}}}
6、测试类
package com.java.visitor;public class VisitorTest {public static void main(String[] args) {for(int i = 0; i < 10; i ++){Element e1 = ObjectStructure.createElement();e1.accept(new Visitor());}}}
7、测试结果
朋友张三...朋友李四...朋友李四...朋友张三...朋友张三...朋友李四...朋友张三...朋友张三...朋友张三...朋友张三...
阅读全文
0 0
- 设计模式之访问者
- 设计模式之访问者
- 设计模式之访问者模式
- 设计模式之--访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 【设计模式】之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 设计模式之访问者模式
- 深入理解Objective-C:Category
- 漂亮实用的提示框插件SweetAlert
- 没有针对多指触控处理版本与多指触控处理版本
- 那些让我难以忘记的TED演讲
- linux环境内存分配原理 mallocinfo
- 设计模式之访问者模式
- SpringMVC基础
- NSTimer的使用
- iOS开发 self与super总结
- mysql执行计划详解
- 消息传递机制
- 程序猿的情话
- “一带一路”有哪些机会?马云董明珠曹德旺这么说
- sass编译成css时显示乱码