概要 | パッケージ | クラス | 使用 | 階層ツリー | 非推奨 API | 索引 | ヘルプ
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

## 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 役実装またはそのクラスオブジェクトと `Acceptable`の`Map`を返す。
`void` | `setContext(java.lang.Object context)` コンテキストを設定する。
`void` | `setMap(java.util.Map<java.lang.Object,Acceptable> map)` 委譲先`Acceptable`を分岐する定義としての、 Element 役実装(またはそのクラスオブジェクト)と `Acceptable`の`Map`を設定する。
`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 役実装またはそのクラスオブジェクトと `Acceptable`の`Map`を返す。

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

### setMap

    public void setMap(java.util.Map<java.lang.Object,Acceptable> map)

  委譲先`Acceptable`を分岐する定義としての、 Element 役実装(またはそのクラスオブジェクト)と `Acceptable`の`Map`を設定する。

  パラメータ:
    `map` - Element 役実装と`Acceptable`の`Map`。

### copy

    public Visitor copy()

  浅いコピーを行う。`Cloneable`は実装していない。

  戻り値:
    コピーされた`Visitor`。

概要 | パッケージ | クラス | 使用 | 階層ツリー | 非推奨 API | 索引 | ヘルプ
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

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