访问者模式:访问数据结构并处理数据
1.工厂模式:提供创建对象的接口2.单例模式:生成只存在一个的实例3.桥接模式:将类的功能层次和实现层次分离,动态结合4.享元模式:避免大量相同开销5.原型模式:通过复制生成实例6.建造者模式:组装复杂实例7.职责链模式:推卸责任8.模板模式:具体的步骤延迟到子类中实现9.迭代器模式:一个个遍历10.外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统11.代理模式:为其他对象提供一种代理以控制对这个对象的访问12.适配器模式:将两个不兼容的类纠合在一起13.组合模式:处理树形结构数据14.装饰器模式:动态给一个对象添加一些额外的职责15.命令模式:命令也是类
16.访问者模式:访问数据结构并处理数据
17.观察者模式:发送状态变化通知18.状态模式:用类表示状态19.策略模式:整体替换算法20.解释器模式:语法规则也是类21.中介者模式:只有一个仲裁者22.备忘录模式:保存对象状态访问者模式是Java中的一种行为型设计模式,它允许你定义在不改变被访问对象(如类、接口等)结构的前提下,对其内部的元素访问和操作。该模式适用于需要对一个复杂对象结构(如代码中的类层次结构)进行多种不同操作的场景。
示例代码
// 定义被访问者接口 interface Element { void accept(Visitor visitor); } // 定义具体的被访问者类 class ConcreteElement implements Element { @Override public void accept(Visitor visitor) { visitor.visit(this); } // 具体元素特有的方法 public String operation() { return "ConcreteElement"; } } // 定义访问者接口 interface Visitor { void visit(ConcreteElement concreteElement); } // 定义具体的访问者类 class ConcreteVisitor implements Visitor { @Override public void visit(ConcreteElement concreteElement) { System.out.println(concreteElement.operation() + " visited by ConcreteVisitor."); } } // 测试代码 public class Main { public static void main(String[] args) { Element element = new ConcreteElement(); Visitor visitor = new ConcreteVisitor(); // 在不改变被访问者对象结构的情况下,对其内部元素进行访问和操作 element.accept(visitor); } }
以上代码中,Element
接口定义了一个 accept
方法,该方法接收一个 Visitor
参数,用于在 ConcreteElement
类中调用 Visitor
实例的 visit
方法进行具体的访问和操作。
ConcreteElement
实现了 Element
接口,并重写了 accept
方法。ConcreteVisitor
实现了 Visitor
接口,并重写了 visit
方法,用于对 ConcreteElement
元素进行具体的访问和操作。
在测试代码中,我们创建了一个 ConcreteElement
实例和一个 ConcreteVisitor
实例,并将 ConcreteElement
实例传递给 ConcreteVisitor
实例的 visit 方法,从而实现了对 ConcreteElement
元素的访问和操作。
合集:
Java设计模式
分类:
Java设计模式 / 行为型模式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性