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

     4.1问题的解决方法

    package test;
    
    public class Problem3 {
    
        public static void main(String[] args) {
            //访问者
            IGamePersonPart gamePerson=new GamePerson();
            gamePerson.accept(new GamePersonDisplayPartVisitor());        
    
        }
    }
    interface IGamePersonPart{
        public void accept(GamePersonVisitor gamePersonVisitor);
    } 
    class GamePerson implements IGamePersonPart{
        IGamePersonPart[] decorates;
        //存储游戏人物配置
        public GamePerson(){
            decorates=new IGamePersonPart[]{new Clothes(),new Shoes(),new Accessories(),new Arms()};
        }
        @Override
        public void accept(GamePersonVisitor gamePersonVisitor) {
            // TODO Auto-generated method stub
            for(int i=0;i<decorates.length;i++) {
                decorates[i].accept(gamePersonVisitor);
            }
            gamePersonVisitor.visit(this);
        }    
    }
    class Clothes implements IGamePersonPart{
        @Override
        public void accept(GamePersonVisitor gamePersonVisitor) {
            // TODO Auto-generated method stub
            gamePersonVisitor.visit(this);
        }        
    }
    
    class Shoes implements IGamePersonPart{
        @Override
        public void accept(GamePersonVisitor gamePersonVisitor) {
            // TODO Auto-generated method stub
            gamePersonVisitor.visit(this);
        }    
    }
    class Accessories implements IGamePersonPart{
        @Override
        public void accept(GamePersonVisitor gamePersonVisitor) {
            // TODO Auto-generated method stub
            gamePersonVisitor.visit(this);
        }    
    }
    class Arms implements IGamePersonPart{
        @Override
        public void accept(GamePersonVisitor gamePersonVisitor) {
            // TODO Auto-generated method stub
            gamePersonVisitor.visit(this);
        }    
    }
    
    interface GamePersonVisitor {
           public void visit(GamePerson gamePerson);
           public void visit(Clothes clothes);
           public void visit(Shoes shoes);
           public void visit(Accessories accessories);
           public void visit(Arms arms);
    }
    //游戏人物和细节展示
    class GamePersonDisplayPartVisitor implements GamePersonVisitor {
             
           @Override
           public void visit(GamePerson gamePerson) {
              System.out.println("Displaying GamePerson.");
           }
         
           @Override
           public void visit(Clothes clothes) {
              System.out.println("Displaying Clothes.");
           }
         
           @Override
           public void visit(Shoes shoes) {
              System.out.println("Displaying Shoes.");
           }
         
           @Override
           public void visit(Accessories accessories) {
              System.out.println("Displaying Accessories.");
           }
           @Override
           public void visit(Arms arms) {
              System.out.println("Displaying Arms.");
           }
        }
  • 相关阅读:
    DAY09(for语句)
    Python 下载 tushare 数据,然后调用 C++ DLL 计算 wMA 存入本地 csv 文件再 python 读取
    Python socket编程之八:阶段性总结
    Ctex + Lyx = 自用 Latex 编辑环境
    matlab下二重积分的蒙特卡洛算法
    实验9 根据材料编程
    实验5 编写、调试具有多个段的程序
    实验4 [bx]和loop的使用
    实验3 编程、编译、连接、跟踪
    汇编语言第三章总结
  • 原文地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/10033377.html
Copyright © 2011-2022 走看看