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

    访问者模式将数据和对数据的操作分离开来,使其在不改变数据结构的前提下动态添加作用于这些元素上的操作。它将数据结构的定义和数据操作的定义分离开来,符合“单一职责”原则。访问者模式通过定义不同的访问者实现对数据的不同操作,因此在需要给数据添加新的操作时只需为其定义一个新的访问者即可。

    适用于数据结构稳定但是数据操作方式多变的系统中。

     

    image

    (1)定义元素

    public interface Element{
        void accept(Visitor visitor);
    }
    
    public class ProjectElement implements Element{
        private String projectName;
        private String projectContent;
        private String visitorName;
        private Date visitorTime;
        
        public ProjectElement(String projectName,String projectContent){
            this.projectName = projectName;
            this.projectContent = projectContent;
        }
        @Override
        public void accept(Visitor visitor){
            visitor.visit(this);
        }
        public void signature(String visitorName,Date visitorTime){
            this.visitorName = visitorName;
            this.visitorTime = visitorTime;
        }
    }

    (2)定义访问者

    public interface Visitor{
        void visit(ProjectElement element);
    }
    
    public class CEOVisitor implements Visitor{
        private final static Log logger = LogFactory.getLog(this.getClass());
    
        @Override
        public void visit(ProjectElement element) {
            logger.info("CEO Visitor");
            element.signature("CEO",new Date());
        }
    }
    
    public class CTOVisitor implements Visitor{
        private final static Log logger = LogFactory.getLog(this.getClass());
    
        @Override
        public void visit(ProjectElement element) {
            logger.info("CTO Visitor");
            element.signature("CTO",new Date());
        }
    }

    (3)使用访问者模式

    public static void main(String[] args){
        Element element = new ProjectElement("mobike","share bicycle");
        element.accept(new CTOVisitor());
        element.accept(new CEOVisitor());
    }

  • 相关阅读:
    优步UBER司机全国各地奖励政策汇总 (4月4日-4月10日)
    苏州Uber优步司机奖励政策(4月2日~4月3日)
    成都Uber优步司机奖励政策(4月5日)
    北京Uber优步司机奖励政策(4月5日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月5日)
    百度百科股票教程
    趋势型指标——MACD
    Git和Code Review流程
    nodejs npm常用命令
    win系统下nodejs安装及环境配置
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15239239.html
Copyright © 2011-2022 走看看