Facadeパターン

Facadeパターンはもうちょっと違う話。
たとえばある処理をしたいとする。
そしてその処理するためにはClassAとかClassBとかClassCとか色々なクラスが絡み合ってる。
まずClassAのhoge()というメソッドを呼び出して、次にClassCのfuga()というメソッドを呼び出して、その結果に応じてClassBのfoo()メソッドだったりClassCのboo()メソッドを呼び出して、次は・・・・
とかとか、もーぐちゃぐちゃした感じな時にこのFacadeパターンが使える。C
Client役はFacadeというクラスがあるのを知っていて、とにかくこの処理をした時はFacadeのhogehoge()というメソッドを呼び出せばOK!
ということだけ知ってる。
あとの細かいことはFacadeのhogehoge()メソッドの中でグニャグニャやってる。
そしてそのグニャグニャが終わったら自分の望む結果が返ってくる。
知っているのはこれだけ。


ちなみに結城先生の本にもwikipediaにもFacadeパターンに関連するパターンとしてAbstract Factoryパターンがのっている。
Abstract FactoryのFactoryクラスがいわゆるFacadeクラスに相当するとなっている。
(ちなみにwikipediaではConcreteFactoryがFacadeクラスに相当するとなっている)
Abstract Factoryでは、「よくわかんないけどこれこれこういう製品(オブジェクト)を生成したい時はFactoryクラスのcreate()メソッドを呼び出せばOKだね!」というかんじ。
まさに結城先生の本にも書いてあったように、
「オブジェクトを生成するには、これさえ呼べばOK」というインタフェース(API)を提供しているのがFactoryクラスですね。