デザインパターン入門(Visitor)

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

ずっとデザインパターンについて書いています。
もっとほかの事も書けばいいのに・・・
と自分でも思う。

まだ誰も見ていないようだし、色づけをしているのかな?
それとも、あたりさわりのない内容で埋めているのだろうか?
(自己分析終わり。)

さて、Visitorパターン、ディスパッチ紹介といった内容ですね。
初めて、method(this)という書き方をした。

パッと意味を理解しずらい。
”オブジェクトをサブルーチンを強力にしたもの”と理解している頭に冷水をかけてくれました。

サブルーチンの場合、実行後処理は必ず呼び出し元に返ってきます。
再帰処理の場合でも、呼び出されるのは自分自身なので、呼び出し側で呼び出される側のことを考えるとちゃんと戻ってこれます。
↓こんな感じ

public class Main {
	public static void main(String[] args) {
		int i = fanctional(5);
		System.out.println(i);
	}
	private static int fanctional(int i){
		if (i <= 1){
			return 1;
		} else {
			return (i * fanctional(i - 1));
		}
	}
}

呼び出すときに、ひとつずつカウントダウンをしていて、最低値が決まっているからループしませんってワケ。

ところが、ダブルディスパッチの場合、呼び出し先が呼び出し元を呼び出している。いやいや、呼び出せるというだけで、さらに別のとことろにさらにディスパッチさせたりする。
参照関係が循環するかもと考えるとぞっとします。

オブジェクト指向の説明には、オブジェクト同士がメッセージで動くよ〜的な説明があった気がします。(うろ覚えでスマンス。)
基本的にはこんな処理を許しているのだなあと驚いた。

さて、それをどうやって制御し、有限の範囲にまとめるのかは今後コーディングして考察することにします。

追記−JavaってJが大文字であとは小文字なんですね。
知らなかった。COBOLERなので基本すべて大文字で書いていました。