美文网首页
设计模式-visitor

设计模式-visitor

作者: Wu杰语 | 来源:发表于2020-12-24 19:56 被阅读0次

visitor模式可以分离对象和操作,满足开闭原则。对象的操作都抽象在visitor中,使用了重载方法。

例子

public abstract class Shape {
  abstract public void accept(Visitor visitor);
}

public Circle implement Shape {
  public void accept(Visitor visitor) {
    visitor.visit(this);
  }
}


public Rectanglar implement Shape {
  public void accept(Visitor visitor) {
    visitor.visit(this);
  }
}

public interface Visitor {
  public void visit(Circle c);
  public void visit(Rectanglar r);
}

public Draw implement Visitor {
    public void visit(Circle c) {
    }
   public void visit(Rectanglar r) {
    }
}

public class Application {
  public static void main(string[] argc) {
    List<Shape> shapes = new ArrayList<Shape>();
    shapes.add(new Circle());
    shapes.add(new Rectanglar());
    
    shapes.foreach(shape -> shape.accept(new Draw());
  }

visitor模式将操作以重载的方式封装在visitor对象中,当需要不同的操作的时候,就封装不同的visitor。

小结

visitor模式本身并不难,主要是实现的时候有一定的技巧,在实际的代码中使用也并不多,需要我们多注意发掘。

相关文章

网友评论

      本文标题:设计模式-visitor

      本文链接:https://www.haomeiwen.com/subject/nefvnktx.html