JAVA的23种设计模式---访问者模式
来源:互联网 发布:linux高性能服务器 pdf 编辑:程序博客网 时间:2024/06/16 19:14
概要:
该文章参考了《设计模式之禅》一书及一些前辈的博客文章
1.该文章阐述了访问者模式的基础原理及示例代码;
2.该文章适合初学设计模式的技术人员研习;
3.该文章有许多不足之处,请各位大咖指正,喷子绕道;
正文:
访问者模式:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。
1.通用访问者模式模板代码实现:
package com.csdn;/** * 抽象元素 * @author Administrator * */public abstract class Element { //定义业务逻辑 public abstract void doSomething(); //允许谁访问 public abstract void accept(IVisitor visitor);}
package com.csdn;/** * 具体元素A * @author Administrator * */public class ConcreteElementA extends Element{ //完善业务逻辑 @Override public void doSomething() { System.out.println("元素A"); } //允许哪个访问者访问 @Override public void accept(IVisitor visitor) { visitor.visit(this); }}
package com.csdn;/** * 具体元素B * @author Administrator * */public class ConcreteElementB extends Element{ //完善业务逻辑 @Override public void doSomething() { System.out.println("元素B"); } //允许哪个访问者访问 @Override public void accept(IVisitor visitor) { visitor.visit(this); }}
package com.csdn;/** * 抽象访问者 * @author Administrator * */public interface IVisitor { //可以访问哪些对象 public void visit(ConcreteElementA cea); public void visit(ConcreteElementB ceb);}
package com.csdn;/** * 具体访问者 * @author Administrator * */public class Visitor implements IVisitor { //访问A元素 @Override public void visit(ConcreteElementA cea) { cea.doSomething(); } //访问B元素 @Override public void visit(ConcreteElementB ceb) { ceb.doSomething(); }}
package com.csdn;import java.util.Random;/** * 结构对象 * @author Administrator * */public class ObjectStruture { //对象生成器 public static Element createElement(){ Random random = new Random(); if(random.nextInt(100) > 50){ return new ConcreteElementA(); }else{ return new ConcreteElementB(); } }}
package com.csdn;/** * 场景类 * @author Administrator * */public class Client { public static void main(String[] args) { for(int i = 0 ; i < 10 ; i++){ //获得元素 Element element = ObjectStruture.createElement(); //接受访问者访问 element.accept(new Visitor()); } }}
输出:(输出结果不确定)
元素B元素A元素B元素A元素A元素A元素B元素A元素A元素A
注:
a:访问者模式有抽象访问者、具体访问者、抽象元素、具体元素、结构对象五个角色。
未完待续…
阅读全文
0 0
- JAVA的23种设计模式---访问者模式
- JAVA开发的23种设计模式之 --- 访问者模式
- java设计模式 访问者模式
- java设计模式-访问者模式
- JAVA设计模式---访问者模式
- java设计模式---访问者模式
- java设计模式---访问者模式
- 访问者模式-java设计模式
- Java设计模式---访问者模式
- Java设计模式--访问者模式
- Java设计模式--访问者模式
- java设计模式,访问者模式
- JAVA设计模式--访问者模式
- JAVA设计模式--访问者模式
- JAVA 设计模式 访问者模式
- 23种设计模式之访问者模式
- 23种设计模式-9-访问者模式
- 23种设计模式(18):访问者模式
- Node.js学习笔记之一
- J2EE经典面试题及答案05
- apache 虚拟主机配置最简单仅 4 行代码搞定
- 先序遍历构建二叉树 java
- 802.11学习(一)LAN组件
- JAVA的23种设计模式---访问者模式
- numpy中loadtxt与genfromtxt函数
- C#设计模式之策略模式
- 脉冲云--解决DevOps人员的'痛'
- 【OpenCV3图像处理】形态学 开运算 闭运算
- Visual Studio 各种版本间代码的转换
- .NET、ASP.NET、C# 三者之间的关系
- 关于网站推送消息的几个初步考虑
- 微信公众号开发 Token和凭证Access Token