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

    /**
     * 访问者模式
     * @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());
        }
        
    }
  • 相关阅读:
    kernel-devel-3.10.0-957.el7.x86_64.rpm kernel-headers-3.10.0-957.el7.x86_64.rpm
    解决MySQL安装:找不到msvcr120.dll和msvcp120.dll
    Node.js安装
    大数据电商数据仓库
    spark
    redis 脑裂等极端情况分析
    Redis解决并发超卖问题
    解决OutOfMemoryError: unable to create new native thread问题
    好用的java工具
    java初始化和实例化
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6236083.html
Copyright © 2011-2022 走看看