Facade は、 構造に関するデザインパターンの一つで、 複雑なクラスのシステム、 ライブラリー、 またはフレームワークに対して単純な (しかし限定された) インターフェースを提供します。
Facade は、 アプリケーションの全体としての複雑さを軽減しますが、 それと同時に望ましくない依存性を一箇所に集めるのにも役立ちます。
複雑度:
人気度:
使用例: Facade パターンは、 Java のアプリでよく見かけます。 複雑なライブラリーや API を相手にする時、 特に役に立ちます。
Java のコラ・ライブラリー内での Facade の使用例:
見つけ方: 単純なインターフェースのクラスがほとんどの作業を他のクラスに委任していたら、 Facade パターンの使用が識別できます。 通常、 ファサードは、 それが使うオブジェクトのライフサイクルを完全に管理します。
複雑なビデオ変換ライブラリー用の単純なインターフェース
この例では、 Facade パターンを使い、 複雑なビデオ変換フレームワークとのやりとりを簡素化します。
Facade を使用した結果のクラスは、 フレームワークの適切なクラスを構成し、 正しい形式で結果を取得するのに必要な複雑な処理すべてを行うメソッド一つからできています。
some_complex_media_library: 複雑なビデオ変換ライブラリー
some_complex_media_library/VideoFile.java
some_complex_media_library/Codec.java
some_complex_media_library/MPEG4CompressionCodec.java
some_complex_media_library/OggCompressionCodec.java
some_complex_media_library/CodecFactory.java
some_complex_media_library/BitrateReader.java
some_complex_media_library/AudioMixer.java
facade
facade/VideoConversionFacade.java: Facade で、 ビデオ変換の単純なインターフェースを作成
Demo.java: クライアント・コード
OutputDemo.txt: 実行結果