読者です 読者をやめる 読者になる 読者になる

プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

15.Facade シンプルな窓口

ファサードパターン。フランス語で建物の正面という意味らしい。
シンプルな窓口というくらいだからページ数も少ない。
ごちゃごちゃした詳細をまとめ、高レベルのAPIを提供する。システムの外側にシンプルなAPIを見せる。

f:id:p-monster:20121218195638p:plain

Facade・・・システムを構成しているその他大勢の役の「シンプルな窓口」。高レベルでシンプルなAPIをシステム外部に提供
システムを構成しているその他大勢の役・・・それぞれの仕事を行う。Facadeを意識しない。Facadeを呼び出さない
Client・・・Facadeを利用する役

APIを少なくすることで、複雑さを意識せずシンプルに使えるようになる。
Facadeが再起すればシステムはよりシンプルになる。非常に大きなシステムでは要所要所でFacadeすることにより便利に使えるようになる。
「何かをする前に何かをする必要がある」という場合、通常はそれを事前に知っていなければならない。しかし、Facadeを使うことで必要な手順をカプセル化することができる。そのため、つねに目を光らせておく必要がなくなる。

関連しているパターン

AbstractFactory・・・オブジェクト生成という複雑な作業に関するFacadeパターン
Singleton・・・Facade役はSingletonとして作られる場合がある
Mediator・・・FacadeパターンではFacade役が一方的に他の役を利用して高レベルなAPIを作る。MediatorパターンではMediator役はColleague役の仲介者を通してやりとりする。Facadeは一方向、Mediatorは双方向

参考:

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

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