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