美文网首页
访问者模式

访问者模式

作者: 最美时光在路上 | 来源:发表于2016-10-28 23:12 被阅读0次
    1. 元素抽象类或接口
    public abstract class AbstractElement {
        //公共方法
        public abstract void doSomething();
        //接收访问者对象
        public abstract void accept(IVisitor visitor);
    }
    
    1. 元素抽象类或接口实现类
    public class ConcreteElement1 extends AbstractElement {
        //继承方法
        @Override
        public void doSomething() {
        }
        //普通私用方法
        protected void method1() {
        }
        //接收访问者访问
        @Override
        public void accept(IVisitor visitor) {
            visitor.visit(this);
        }
    }
    public class ConcreteElement2 extends AbstractElement {
        //继承方法
        @Override
        public void doSomething() {
        }
        //普通私用方法
        protected void method2() {
        }
        //接收访问者访问
        @Override
        public void accept(IVisitor visitor) {
             visitor.visit(this);
        }
    }
    
    1. 访问者抽象类或接口
    public interface IVisitor {
        void visit(ConcreteElement1 element1);
        void visit(ConcreteElement2 element2);
    }
    
    1. 访问者抽象类或接口实现类
    public class Visitor implements IVisitor {
        @Override
        public void visit(ConcreteElement1 element1) {
            element1.doSomething();
            element1.method1();
        }
        @Override
        public void visit(ConcreteElement2 element2) {
            element2.doSomething();
            element2.method2();
        }
    }
    
    1. 场景使用
        //定义元素对象
        ConcreteElement1 element1 = new ConcreteElement1();
        //定义访问者
        IVisitor visitor = new Visitor();
        //添加访问者
        element1.accept(visitor);
    

    相关文章

      网友评论

          本文标题:访问者模式

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