ほげノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

Facade パターンとは何なのか

参考:

Facade パターン - Wikipedia

Facade(ファサード)とは「建物の正面」を意味する。異なるサブシステムを単純な操作だけを持ったFacadeクラスで結び、サブシステム間の独立性を高める事を目的とする。 

Facadeクラスはあくまでサブシステム内部に仕事を投げるだけで複雑な実装は持たない。

多様な機能の塊であるサブシステムから、サブシステムを利用するユーザーの用途に合わせた窓口(インターフェース)を提供するだけである。

このソースコードの場合、クラス図の Facade にあたるのは DrivingSimulator である。 Car や Driver の各種メソッドの呼び出しが DrivingSimulator#simulate() の中にすべて集約されている。  

とにかく、Facadeクラスは、独立した複数のサブクラスのメソッドを呼び出して、窓口となるクラス。とにかく、サブクラスは独自の役割のみに集中できて、Facade クラスはそれらを呼び出す方法をまとめる役割のみを行うので、構造がシンプルになる。

うーん、Head First デザインパターン読もうかな…。