オブジェクト指向設計


Facade パターン - ファサードパターン

2008/07/09 21:16Update
TAGS: Facadeパターン | GoF | デザインパターン | OOD | オブジェクト指向設計

Facade パターンはGoFによる23種類のデザインパターンの構造に関連するパターンです。簡単に言えば、Facade パターンは、複雑な関連性のあるクラス群やサブシステムなどの機能を呼び出すのに、窓口となる一つのクラス(Facade)を配置するパターンです。

概要


実際のアプリケーションシステムでは、複雑なモジュールや機能はたくさんの小さなクラスによって構成されることがほとんどです。ほかのモジュールや機能からこれらの機能を利用する場合、複雑であるため、どのクラスどのように利用すべきか、適切に処置することが容易ではありません。

Facade パターンはこれらの複雑なクラス群を利用するために、窓口となる一つのクラス(Facade)を配置します。該当Facadeクラスはシンプルなインタフェースで、外部からもその複雑であるクラス群を容易に利用できるようになります。

Facade パターンのメリット


◇ 利用する側と利用される側のクラス群の依存関係を低くなり、低結合度を実現できます。
◇ よくデザインされたインタフェースで複雑であるクラス群をでも容易に利用できます。

Facade パターンの使用シーン


◇ 複雑なサブシステムや関連性のあるクラスを容易に利用するため

Facade パターンのクラス図


<<クラス図>>

Client:クライアント。利用する側。
Facade:窓口となるクラス。
Packages:利用される側であるサブシステムや複雑なクラス群。

Facade パターンの使用例


//複雑なクラス群A1、A2、A3
//実際の実装をここでは略する
class A1 {
    public void doSomething1();
}

class A2 {
    public void doSomething2();
}

class A3 {
    public void doSomething3();
}

//Facade:窓口となるクラス。
public class Facade {
    public void doSomething() {
        A1 a1 = new A1();
        A1 a2 = new A2();
        A1 a3 = new A3();

        a1.doSomething1();
        a2.doSomething2();
        a3.doSomething3();
    }
}


//Test:利用する側のクラス例
public class Client {
    public static void main(String []args) {
        Facade facade = new Facade();
        facade.doSomething();
    }
}

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments