首页 > 代码库 > 访问者模式——HeadFirst设计模式学习笔记
访问者模式——HeadFirst设计模式学习笔记
访问者模式:为某个对象组合添加新功能,而又不改变组合的内部结构
- Visitor抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口
- ConcreteVisitor具体访问者角色,实现Visitor声明的接口
- Element定义一个接受访问操作(accept()),它以一个访问者(Visitor)作为参数
- ConcreteElement具体元素,实现了抽象元素(Element)所定义的接受操作接口
- ObjectStructure结构对象角色,这是使用访问者模式必备的角色。它具备以下特性:能枚举它的元素;可以提供一个高层接口以允许访问者访问它的元素
特点:
- 元素类可以通过接受不同的访问者来实现对不同操作的扩展
- 将和本对象相关性较低的操作封装到访问者中,对访问者对对象组合都符合单一职责原则
- 适用于变化性较低的对象组合
举例:
1 abstract class Element { 2 public abstract void accept(IVisitor visitor); 3 public abstract void doSomething(); 4 } 5 6 interface IVisitor { 7 public void visit(Element e); 8 } 9 10 class ConcreteElement extends Element { 11 public void doSomething(){ 12 System.out.println("这是元素"); 13 } 14 15 public void accept(IVisitor visitor) { 16 visitor.visit(this); 17 } 18 } 19 20 class Visitor implements IVisitor { 21 22 public void visit(Element e) { 23 e.doSomething(); 24 } 25 } 26 27 28 public class Client { 29 public static void main(String[] args){ 30 List<Element> list = ObjectStruture.getList(); 31 for(Element e: list){ 32 e.accept(new Visitor()); 33 } 34 } 35 }
访问者模式——HeadFirst设计模式学习笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。