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.");
           }
        }
  • 相关阅读:
    CSS属性中Display与Visibility的不同
    11
    【零基础学习iOS开发】【01-前言】01-开篇
    C#计算时间差。
    C++拷贝构造函数:浅拷贝与深拷贝
    C++:string操作函数
    文件输入输出(二):文件的操作
    文件输入输出(一):重定向
    Java中的StringBuffer
    C++中setiosflags()的用法
  • 原文地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/10033377.html
Copyright © 2011-2022 走看看