Facadeパターンの考え方について悩んでおります。
いわゆるFacadeパターンは、
こういう感じになっていると理解しています。
PHP
1//すみません、等幅にしたい為だけにPHPを選んでいます 2 +-->処理パターンA<---+ 3 | (使う) 4処理まとめ役--(使う)--+-->処理パターンB<---+ 5 | 6 +-->処理パターンC
ここで、いくつかサイトを見てみますと
https://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
Facadeクラスをサブシステム自体が利用する事はない。
http://d.hatena.ne.jp/asakichy/20090314/1237030727
つまり、サブシステム内のクラスは Facade オブジェクトへの参照を保持しない。
と書いてあります。
つまり、こういう実装はしないものだ、と理解しています。
PHP
1 +-----(使う)----------+ 2 | | 3 | +-->処理パターンA 4 v | 5処理まとめ役--(使う)--+-->処理パターンB 6 | 7 +-->処理パターンC
しかし、「処理パターンA」が他の処理パターンの結果を必要とする場合、
どの処理パターンを使うかを含めて「処理まとめ役」に再帰的に処理を委ねたい、
という事もあるかと思っています。
(数式の構文解析で言うところの、()の処理みたいなイメージでしょうか…?)
処理まとめ役は、全ての処理パターンの内容を知っているけれど、
各処理パターンは、全ての互いの内容を知っている必要はない、と考えています。
そこで疑問なのですが、なぜ
Facadeクラスをサブシステム自体が利用する事はない。
と、あえて明言しているのでしょうか。
「処理まとめ役」と「処理パターンA」の関係が密になりすぎる(?)ためNG、なのでしょうか。
NGであるならば、
しかし、「処理パターンA」が他の処理パターンの結果を必要とする場合、
どの処理パターンを使うかを含めて「処理まとめ役」に処理を委ねたい、
というような事がある場合、なにか他に良い考え方がある、という事なのでしょうか。
どうか、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/27 06:22