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)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.testinfo;
public class AddrFacade {
public static void main(String[] args) {
FacadeDemo fd = new FacadeDemo();
fd.funA();
}
}
package com.arkgame.testinfo; public class AddrFacade { public static void main(String[] args) { FacadeDemo fd = new FacadeDemo(); fd.funA(); } }
package com.arkgame.testinfo;

public class AddrFacade {

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

      }

}

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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());
}
}
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()); } }
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.testinfo;
//個別の処理のクラスA
public class GetAddrA {
public String getFunA() {
return "tokyo";
}
}
package com.arkgame.testinfo; //個別の処理のクラスA public class GetAddrA { public String getFunA() { return "tokyo"; } }
package com.arkgame.testinfo;

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

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.testinfo;
//個別の処理のクラスB
public class GetAddrB {
public String getFunB() {
return "oosaka";
}
}
package com.arkgame.testinfo; //個別の処理のクラスB public class GetAddrB { public String getFunB() { return "oosaka"; } }
package com.arkgame.testinfo;
//個別の処理のクラスB
public class GetAddrB {

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.testinfo;
//個別の処理のクラスC
public class GetAddrC {
public String getFunC() {
return "fukuoka";
}
}
package com.arkgame.testinfo; //個別の処理のクラスC public class GetAddrC { public String getFunC() { return "fukuoka"; } }
package com.arkgame.testinfo;

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

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

6.実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ファサードのクラスAのメソッド: tokyo
ファサードのクラスBのメソッド: oosaka
ファサードのクラスCのメソッド: fukuoka
ファサードのクラスAのメソッド: tokyo ファサードのクラスBのメソッド: oosaka ファサードのクラスCのメソッド: fukuoka
ファサードのクラスAのメソッド: tokyo
ファサードのクラスBのメソッド: oosaka
ファサードのクラスCのメソッド: fukuoka

 

Java

Posted by arkgame