JAva 23デザインモード-25-javaビジターモード(Visitor Pattern)
6856 ワード
目次ディレクトリ ビジターモード 実例 定義 テスト 実装形態 UML & Code UML Code
シリーズナビゲーション ビジターモード
ビジターモード(Visitor Pattern)では、エレメントクラスの実行アルゴリズムを変更するビジタークラスを使用します.これにより、エレメントの実行アルゴリズムは、ビジターの変更に伴って変更できます.このタイプの設計モードは、動作モードに属します.モードによっては、エレメントオブジェクトがビジターオブジェクトを受け入れ、エレメントオブジェクトがエレメントオブジェクト上の操作を処理できるようになります作る.
実例
クラス情報の概要:
クラス名
説明
Main.java
メソッドの総入口
Mouse.java
マウスクラス
Computer.java
コンピュータクラス
ComputerVisitorImpl.java
コンピュータ・アクセス者実装クラス
KeyBoard.java
キーボードクラス
ComputerPartion.java
コンピュータコンポーネントクラス
ComputerVisitor.java
コンピュータアクセスインタフェース
定義#テイギ# Mouse.java Computer.java ComputerVisitorImpl.java KeyBoard.java ComputerPartion.java ComputerVisitor.java
テスト Main.java
ビジターモード(Visitor Pattern)では、エレメントクラスの実行アルゴリズムを変更するビジタークラスを使用します.これにより、エレメントの実行アルゴリズムは、ビジターの変更に伴って変更できます.このタイプの設計モードは、動作モードに属します.モードによっては、エレメントオブジェクトがビジターオブジェクトを受け入れ、エレメントオブジェクトがエレメントオブジェクト上の操作を処理できるようになります作る.
実例
クラス情報の概要:
クラス名
説明
Main.java
メソッドの総入口
Mouse.java
マウスクラス
Computer.java
コンピュータクラス
ComputerVisitorImpl.java
コンピュータ・アクセス者実装クラス
KeyBoard.java
キーボードクラス
ComputerPartion.java
コンピュータコンポーネントクラス
ComputerVisitor.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);
}
}
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);
}
}
}
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);
}
}
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);
}
}
package com.ryo.design.pattern.note.visitor;
/**
*
* @author bbhou
* @date 2017/8/18
*/
public interface ComputerPartion {
/**
*
* @param computerVisitor
*/
void accept(ComputerVisitor computerVisitor);
}
package com.ryo.design.pattern.note.visitor;
/**
*
* @author bbhou
* @date 2017/8/18
*/
public interface ComputerVisitor {
/**
*
* @param computerPartion
*/
void visit(ComputerPartion computerPartion);
}
テスト
/*
* 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
コードアドレス
ビジターモード
シリーズナビゲーション
シリーズナビゲーション