java设计模式25_访问者模式
2017-06-08 09:18
483 查看
访问者模式
在访问者模式中,使用访问者类来改变元素类的执行算法。 通过这种方式,元素的执行算法可以随访问者变化而变化。 此模式属于行为模式类别。 根据每个模式,元素对象必须接受访问者对象,以便访问者对象处理对元素对象的操作实现
这个实现的示例中,将创建一个叫作ComputerPart的接口,并定义接受操作。Keyboard, Mouse, Monitor 和 Computer 是实现ComputerPart接口的具体类。还将定义另一个接口ComputerPartVisitor,它将定义一个访问类操作。 Computer 使用具体的访客做相应的动作。将使用Computer和ComputerPartVisitor类来演示访问者模式的使用。代码
package com.test; //第1步,定义一个接口来表示元素 interface ComputerPart { public void accept(ComputerPartVisitor computerPartVisitor); } // 第2步, 创建扩展上述类的具体类 class Keyboard implements ComputerPart { @Override public void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } } class Monitor implements ComputerPart { @Override public void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } } class Mouse implements ComputerPart { @Override public void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } } class Computer implements ComputerPart { ComputerPart[] parts; public Computer() { parts = new ComputerPart[] { new Mouse(), new Keyboard(), new Monitor() }; } @Override public void accept(ComputerPartVisitor computerPartVisitor) 4000 { for (int i = 0; i < parts.length; i++) { parts[i].accept(computerPartVisitor); } computerPartVisitor.visit(this); } } // 第3步,定义一个接口来代表访问者 interface ComputerPartVisitor { public void visit(Computer computer); public void visit(Mouse mouse); public void visit(Keyboard keyboard); public void visit(Monitor monitor); } // 第4步,创建实现上述类的具体访问者 class ComputerPartDisplayVisitor implements ComputerPartVisitor { @Override public void visit(Computer computer) { System.out.println("Displaying Computer."); } @Override public void visit(Mouse mouse) { System.out.println("Displaying Mouse."); } @Override public void visit(Keyboard keyboard) { System.out.println("Displaying Keyboard."); } @Override public void visit(Monitor monitor) { System.out.println("Displaying Monitor."); } } // 第5 步,使用ComputerPartDisplayVisitor显示计算机的部件 public class Test { public static void main(String[] args) { ComputerPart computer = new Computer(); computer.accept(new ComputerPartDisplayVisitor()); } }
运行结果:
Displaying Mouse. Displaying Keyboard. Displaying Monitor. Displaying Computer.
相关文章推荐
- Java设计模式-----Visitor访问者模式
- Java设计模式十三:访问者模式(Visitor)
- Java开发中的23种设计模式之二十一:访问者模式(Visitor)
- Java 设计摸索--访问者模式
- JAVA系列-设计模式-访问者模式
- JAVA设计模式十四--Visitor(访问者模式)
- JAVA设计模式之访问者模式
- java设计模式笔记:访问者模式
- java设计模式---访问者模式
- Java设计模式(十一)访问者模式 中介者模式
- java设计模式-访问者模式(Visitor)
- Java设计模式之二十五(访问者模式)
- java设计模式之访问者模式
- java设计模式(三)——模板、访问者、组合、解释器、迭代器、中介者
- 设计模式--Java访问者(Visitor)模式
- JAVA设计模式---访问者模式
- Java设计模式十三:访问者模式(Visitor)
- JAVA设计模式十四:--Visitor(访问者模式)
- Java私塾:研磨设计模式 之 访问者模式(Visitor)
- Java设计模式(访问者模式)