论坛
Ai合集
开源相关
教程
论坛
Ai合集
开源相关
教程
游客
注册
登录
DesignPattern Java 23种设计模式全归纳
1. 观察者模式
2. 工厂模式
1、静态工厂模式
2、简单工厂模式(店里买肉夹馍)
3、工厂方法模式(开分店)
4、抽象工厂模式(使用官方提供的原料)
3. 单例设计模式
4. 策略模式
5. 适配器模式
6. 命令模式
7. 装饰者模式
8. 外观模式
9. 模板方法模式
10. 状态模式
11. 建造者模式
12. 原型模式
13. 享元模式
14. 代理模式
15. 桥接模式
16. 组合模式
17. 迭代器模式
18. 中介者模式
19. 备忘录模式
20. 解释器模式
21. 责任链模式
22. 访问者模式
wiki.1024.pm IT论坛
-
+
首页
22. 访问者模式
### 22. 访问者模式 > 在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。 - **主要解决**:稳定的数据结构和易变的操作耦合问题。 以显示计算机的组成部分为例,主要分五步实现: - 1、定义一个表示元素的接口。 ```java public interface ComputerPart { public void accept(ComputerPartVisitor computerPartVisitor); } ``` - 2、创建扩展了上述类的实体类。[Keyboard](https://github.com/youlookwhat/DesignPattern/blob/master/app/src/main/java/com/example/jingbin/designpattern/visitor/impl/Keyboard.java)、[Monitor](https://github.com/youlookwhat/DesignPattern/blob/master/app/src/main/java/com/example/jingbin/designpattern/visitor/impl/Monitor.java)、[Mouse](https://github.com/youlookwhat/DesignPattern/blob/master/app/src/main/java/com/example/jingbin/designpattern/visitor/impl/Mouse.java)、[Computer](https://github.com/youlookwhat/DesignPattern/blob/master/app/src/main/java/com/example/jingbin/designpattern/visitor/impl/Computer.java) ```java public class Computer implements ComputerPart { private ComputerPart[] parts; public Computer() { this.parts = new ComputerPart[]{new Mouse(), new Keyboard(), new Monitor()}; } @Override public void accept(ComputerPartVisitor computerPartVisitor) { for (ComputerPart part : parts) { part.accept(computerPartVisitor); } computerPartVisitor.visit(this); } } ``` ```java public class Mouse implements ComputerPart { @Override public void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } } ``` - 3、定义一个表示访问者的接口。 ```java public interface ComputerPartVisitor { public void visit(Computer computer); public void visit(Mouse mouse); public void visit(Keyboard keyboard); public void visit(Monitor monitor); } ``` - 4、创建实现了上述类的实体访问者。 ```java public class ComputerPartDisplayVisitor implements ComputerPartVisitor { @Override public void visit(Computer computer) { Log.e("---", "Displaying Computer."); } @Override public void visit(Mouse mouse) { Log.e("---", "Displaying Mouse."); } @Override public void visit(Keyboard keyboard) { Log.e("---", "Displaying Keyboard."); } @Override public void visit(Monitor monitor) { Log.e("---", "Displaying Monitor."); } } ``` - 5、使用 ComputerPartDisplayVisitor 来显示 Computer 的组成部分。 ```java ComputerPart computer = new Computer(); computer.accept(new ComputerPartDisplayVisitor()); /* *打印: *---: Displaying Mouse. *---: Displaying Keyboard. *---: Displaying Monitor. *---: Displaying Computer. */ ```
1024wiki
2026年8月11日 13:44
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
分享
链接
类型
密码
更新密码
有效期
Markdown文件
Word文件
PDF文档(打印)