JAva 23デザインモード-25-javaビジターモード(Visitor Pattern)


目次
  • ディレクトリ
  • ビジターモード
  • 実例
  • 定義
  • テスト
  • 実装形態
  • UML & Code
  • UML
  • Code

  • シリーズナビゲーション
  • ビジターモード
    ビジターモード(Visitor Pattern)では、エレメントクラスの実行アルゴリズムを変更するビジタークラスを使用します.これにより、エレメントの実行アルゴリズムは、ビジターの変更に伴って変更できます.このタイプの設計モードは、動作モードに属します.モードによっては、エレメントオブジェクトがビジターオブジェクトを受け入れ、エレメントオブジェクトがエレメントオブジェクト上の操作を処理できるようになります作る.
    実例
    クラス情報の概要:
    クラス名
    説明
    Main.java
    メソッドの総入口
    Mouse.java
    マウスクラス
    Computer.java
    コンピュータクラス
    ComputerVisitorImpl.java
    コンピュータ・アクセス者実装クラス
    KeyBoard.java
    キーボードクラス
    ComputerPartion.java
    コンピュータコンポーネントクラス
    ComputerVisitor.java
    コンピュータアクセスインタフェース
    定義#テイギ#
  • Mouse.java
  • package com.ryo.design.pattern.note.visitor;
    
    /**
     *
     * @author bbhou
     * @date 2017/8/18
     */
    public class Mouse implements ComputerPartion {
    
        @Override
        public void accept(ComputerVisitor computerVisitor) {
            computerVisitor.visit(this);
        }
    
    }
    
  • Computer.java
  • package com.ryo.design.pattern.note.visitor;
    
    import java.util.Arrays;
    import java.util.List;
    
    /**
     *   
     * @author bbhou
     * @date 2017/8/18
     */
    public class Computer implements ComputerPartion {
    
        private List computerPartionList = Arrays.asList(new KeyBoard(), new Mouse());
    
        @Override
        public void accept(ComputerVisitor computerVisitor) {
            for(ComputerPartion computerPartion : computerPartionList) {
                computerVisitor.visit(computerPartion);
            }
        }
    }
    
  • ComputerVisitorImpl.java
  • package com.ryo.design.pattern.note.visitor;
    
    /**
     * @author bbhou
     * @date 2017/8/18
     */
    public class ComputerVisitorImpl implements ComputerVisitor {
    
        @Override
        public void visit(ComputerPartion computerPartion) {
            String className = computerPartion.getClass().getSimpleName();
            System.out.println("visitor " + className);
        }
    
    }
    
  • KeyBoard.java
  • package com.ryo.design.pattern.note.visitor;
    
    /**
     *
     * @author bbhou
     * @date 2017/8/18
     */
    public class KeyBoard implements ComputerPartion {
        @Override
        public void accept(ComputerVisitor computerVisitor) {
            computerVisitor.visit(this);
        }
    }
    
  • ComputerPartion.java
  • package com.ryo.design.pattern.note.visitor;
    
    /**
     *     
     * @author bbhou
     * @date 2017/8/18
     */
    public interface ComputerPartion {
    
        /**
         *       
         * @param computerVisitor     
         */
        void accept(ComputerVisitor computerVisitor);
    
    }
    
  • ComputerVisitor.java
  • package com.ryo.design.pattern.note.visitor;
    
    /**
     *
     * @author bbhou
     * @date 2017/8/18
     */
    public interface ComputerVisitor {
    
        /**
         *    
         * @param computerPartion   
         */
        void visit(ComputerPartion computerPartion);
    
    }
    

    テスト
  • Main.java
  • /*
     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     * Copyright (c) 2012-2018. houbinbini Inc.
     * design-pattern All rights reserved.
     */
    
    package com.ryo.design.pattern.note.visitor;
    
    /**
     * 

    * *
     Created: 2018/5/26   8:36  
    *
     Project: design-pattern  
    *
    * @author houbinbin
    * @version 1.0
    * @since JDK 1.7
    */
    public class Main {
    public static void main(String[] args) {
    ComputerPartion computerPartion = new Computer();
    computerPartion.accept(new ComputerVisitorImpl());
    }
    }
  • visitor KeyBoard
    visitor Mouse

    インプリメンテーションモード
    UML & Code
    UML
    UMLは のように する
    Code
    コードアドレス
    ビジターモード
    シリーズナビゲーション
    シリーズナビゲーション