码迷,mamicode.com
首页 > 其他好文 > 详细

访问者模式(visitorpattern)

时间:2016-12-30 12:00:39      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:nts   interface   聚合   auth   visit   变化   个人   void   test   

/**
 * 访问者模式
 * @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());
    }
    
}

 

访问者模式(visitorpattern)

标签:nts   interface   聚合   auth   visit   变化   个人   void   test   

原文地址:http://www.cnblogs.com/yzjT-mac/p/6236083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!