woolpack.visitor
クラス Visitor

java.lang.Object
  上位を拡張 woolpack.visitor.Visitor

public class Visitor
extends java.lang.Object

Visitor デザインパターンの Visitor 役。 オリジナルの Visitor デザインパターンでは Element 役実装毎に Visitor 役インタフェースの visit メソッドを用意する(オーバロードする)ことを前提にしているが、 本設計では visit メソッドの内部で accept メソッドの役割(Acceptable)を分岐する。 適用しているパターン:Visitor。

作成者:
nakamura

コンストラクタの概要
  Visitor()
          コンストラクタ。
protected Visitor(Visitor base)
          浅いコピーコンストラクタ。
 
メソッドの概要
 Visitor copy()
          浅いコピーを行う。
 java.lang.Object getContext()
          コンテキストを返す。
 java.util.Map<java.lang.Object,Acceptable> getMap()
          委譲先Acceptableを分岐する定義としての、 Element 役実装またはそのクラスオブジェクトと AcceptableMapを返す。
 void setContext(java.lang.Object context)
          コンテキストを設定する。
 void setMap(java.util.Map<java.lang.Object,Acceptable> map)
          委譲先Acceptableを分岐する定義としての、 Element 役実装(またはそのクラスオブジェクト)と AcceptableMapを設定する。
 void visit(java.lang.Object o)
          利用クラスが直接呼び出すか、または Acceptable.accept(Visitor, Object) から呼び出される(called)。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Visitor

public Visitor()
コンストラクタ。


Visitor

protected Visitor(Visitor base)
浅いコピーコンストラクタ。

パラメータ:
base - コピー元。
メソッドの詳細

visit

public void visit(java.lang.Object o)
利用クラスが直接呼び出すか、または Acceptable.accept(Visitor, Object) から呼び出される(called)。 このメソッドはまず引数をキーとしてgetMap()を検索する。 最初にマッチした場合は対応するAcceptableに処理を委譲し処理を終了する。 次に引数のクラス名の代入可能性をgetMap()からキーを順に取り出して検証する。 最初にマッチした場合は対応するAcceptableに処理を委譲し処理を終了する。 いずれもマッチしない場合はなにもしないで処理を終了する。

パラメータ:
o - Element 役。
例外:
java.lang.NullPointerException - mapが null の場合。

getContext

public java.lang.Object getContext()
コンテキストを返す。 Acceptable.accept(Visitor, Object)から呼び出されることを想定している。

戻り値:
コンテキスト。

setContext

public void setContext(java.lang.Object context)
コンテキストを設定する。 このメソッドで設定したコンテキストを Acceptable.accept(Visitor, Object)で利用することを想定している。

パラメータ:
context - コンテキストを設定する。

getMap

public java.util.Map<java.lang.Object,Acceptable> getMap()
委譲先Acceptableを分岐する定義としての、 Element 役実装またはそのクラスオブジェクトと AcceptableMapを返す。

戻り値:
Element 役実装(またはそのクラスオブジェクト)とAcceptableMap

setMap

public void setMap(java.util.Map<java.lang.Object,Acceptable> map)
委譲先Acceptableを分岐する定義としての、 Element 役実装(またはそのクラスオブジェクト)と AcceptableMapを設定する。

パラメータ:
map - Element 役実装とAcceptableMap

copy

public Visitor copy()
浅いコピーを行う。Cloneableは実装していない。

戻り値:
コピーされたVisitor


Copyright (C) 2006 Takahiro Nakamura. All rights reserved.