首页 > ASP.net教程

访问者模式(visitorpattern)

2016-12-30 11:53:07

/** * 访问者模式 * @author TMAC-J * 在客户端和元素之间添加一个访问者 * 当你需要添加一些和元素关系不大的需求时,可以直接放在访问者里面 * 或者是元素之间有一些公共的代码块,你可以把它放在访问者里面,就不用写重复代码了 * 适用于元素数据基本不变,操作不断变化的场景 * 可以不改变元素类,只改变访问者类,个人觉得这个访问者类相当于一个管理器 * 和迭代子模式的区别是迭代子模式主要是针对于一个聚合,其提供的最主要功能是遍历 * 访问者是针对某个元素,情况是元素结构不变,操作多变的情况 * 其实设计模式不用这么死板,只要符合开闭等这些设计模式原则就可以 */public class VisitorPattern {    interface Element{        void doSomething();        void accept(IVisitor visitor);  }    public class ConcreteElement implements Element{    @Override    public void doSomething() {      System.out.println("这是具体元素!");    }    @Override    public void accept(IVisitor visitor) {      visitor.visit(this);    }      }    interface IVisitor{    void visit(Element element);  }    public class ConcreteVisitor implements IVisitor{    @Override    public void visit(Element element) {      element.doSomething();    }      }    public void test(){    IVisitor visitor = new ConcreteVisitor();    visitor.visit(new ConcreteElement());  }  }