zoukankan      html  css  js  c++  java
  • 访问者模式

    抽象访问者(Visitor):声明所有访问者需要的接口

    具体访问者(ConcreteVisitor):实现抽象访问者声明的接口

    抽象节点元素(Element):提供一个接口,能够接受访问者作为参数传递给节点元素

    具体节点元素(ConcreteElement):实现抽象节点元素声明的接口

    结构对象(ObjectStructure):提供一个接口,能够访问到所有的节点元素,一般作为一个集合特有节点元素的引用

    客户端(Client):分别创建访问者和节点元素的对象,调用访问者访问变量节点元素

    visitor

    package design.pattern.visitor;
    
    public interface Visitor {
    
        public void visit(Element element);
    
    }

    element

    package design.pattern.visitor;
    
    public abstract class Element {
        protected String type;
        public Element(String type) {
            this.type = type;
        }
        public void accept(Visitor visitor) {
            visitor.visit(this);
        }
        public String getType() {
            return this.type;
        }
    }

    objectstructure

    package design.pattern.visitor;
    
    public class ObjectStructure {
        private Element arr = new ConcreteElement("ConcreteElement");
        private Visitor visitor;
        
        public void setVisitor(Visitor visitor) {
            this.visitor = visitor;
        }
        
        public void print() {
            if (null == visitor)
                throw new RuntimeException();
            arr.accept(visitor);
        }
    }

    concreteelement

    package design.pattern.visitor;
    
    public class ConcreteElement extends Element {
    
        public ConcreteElement(String type) {
            super(type);
        }
    
    }

    concretevisitora

    package design.pattern.visitor;
    
    public class ConcreteVisitorA implements Visitor {
    
        @Override
        public void visit(Element element) {
            System.out.println("ConcreteVisitorA visit " + element.getType());
        }
    
    }

    concretevisitorb

    package design.pattern.visitor;
    
    public class ConcreteVisitorB implements Visitor {
    
        @Override
        public void visit(Element element) {
            System.out.println("ConcreteVisitorB visit " + element.getType());
        }
    
    }
  • 相关阅读:
    .net注册iis
    hdu 1081To The Max
    hdu 1312Red and Black
    hdu 1016Prime Ring Problem
    hdu 1159Common Subsequence
    hdu 1372Knight Moves
    hdu 1686Oulipo
    hdu 1241Oil Deposits
    hdu 1171Big Event in HDU
    hdu 4006The kth great number
  • 原文地址:https://www.cnblogs.com/m2492565210/p/7231722.html
Copyright © 2011-2022 走看看