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