Java8 ファサード(Facade)パターンを利用するサンプル

環境
Windows 10 64bit
Eclipse 2019
Java8

説明
Facade パターンあるいは Façade パターン(ファサード・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義された、コンピュータソフトウェアのデザインパターンの1つである。
(1).Facade(正面)
複雑な処理を構成している「ClassA・B・C・D」のシンプルなインタフェースを提供します。
(2).ClassA・B・C・D(各処理)
各々が担当している処理を行います。
(3).Client(依頼者)
「Facade」が提供するメソッドを呼出し処理を行います。

使用例
1.呼び出し側のクラス(AddrFacade.java)

package com.arkgame.testinfo;

public class AddrFacade {

      public static void main(String[] args) {
            FacadeDemo fd = new FacadeDemo();
            fd.funA();

      }

}

2.ファサードのクラスの定義(FacadeDemo.java)

package com.arkgame.testinfo;

//ファサードのクラスの定義
public class FacadeDemo {

      public void funA() {
            // GetAddrAクラスをインスタンス化
            GetAddrA ga = new GetAddrA();
            // GetAddrBクラスをインスタンス化
            GetAddrB gb = new GetAddrB();
            // GetAddrCクラスをインスタンス化
            GetAddrC gc = new GetAddrC();
            System.out.println("ファサードのクラスAのメソッド: " + ga.getFunA() + "\nファサードのクラスBのメソッド: " + gb.getFunB()
                        + "\nファサードのクラスCのメソッド: " + gc.getFunC());
      }
}

3.個別のクラスAの定義
ファイル名 GetAddrA.java

package com.arkgame.testinfo;

//個別の処理のクラスA
public class GetAddrA {

      public String getFunA() {
            return "tokyo";
      }
}

4.個別のクラスBの定義
ファイル名 GetAddrB.java

package com.arkgame.testinfo;
//個別の処理のクラスB
public class GetAddrB {

      public String getFunB() {
            return "oosaka";
      }
}

5.個別のクラスCの定義
ファイル名:GetAddrC.java

package com.arkgame.testinfo;

//個別の処理のクラスC
public class GetAddrC {

      public String getFunC() {
            return "fukuoka";
      }
}

6.実行結果

ファサードのクラスAのメソッド: tokyo
ファサードのクラスBのメソッド: oosaka
ファサードのクラスCのメソッド: fukuoka

 

Java

Posted by arkgame