ForNext
Only Do What Only You Can Do
Facade
VBScript
JScript
Perl
PHP
Python
Ruby
PowerShell
Scala
F#
C
C++
C++Builder
VC++
C#
Java
更新日 : 2010.11.25
■ Step 1 パターン適用前
■ MyClassA
public class MyClassA { public String getName() { return "Suzuki"; } public int getAge() { return 20; } }
■ MyClassB
public class MyClassB { public String getAddress() { return "Tokyo"; } public int getFloor() { return 2; } }
■ MyMain
public class MyMain { public static void main(String args[]) { MyClassA classA = new MyClassA(); System.out.println(classA.getName()); System.out.println(classA.getAge()); MyClassB classB = new MyClassB(); System.out.println(classB.getAddress()); System.out.println(classB.getFloor()); } }
L:\>java MyMain Suzuki 20 Tokyo 2
■ Step 2 Facade
■ IMyFacade (追加)
public interface IMyFacade { public String getProperty(); }
■ MyFacadeA (追加)
// ファサードクラスは インターフェースに依存 public class MyFacadeA implements IMyFacade { private MyClassA classA; public MyFacadeA() { classA = new MyClassA(); } public String getProperty() { String result = ""; result += classA.getName(); result += "\n"; result += classA.getAge(); return result; } }
■ MyFacadeB (追加)
// ファサードクラスは インターフェースに依存 public class MyFacadeB implements IMyFacade { private MyClassB classB; public MyFacadeB() { classB = new MyClassB(); } public String getProperty() { String result = ""; result += classB.getAddress(); result += "\n"; result += classB.getFloor(); return result; } }
■ MyMain (変更)
public class MyMain { public static void main(String args[]) { // インターフェースにだけ依存 // 各クラスの実装に依存しない IMyFacade facade = new MyFacadeA(); System.out.println(facade.getProperty()); facade = new MyFacadeB(); System.out.println(facade.getProperty()); } }
L:\>java MyMain Suzuki 20 Tokyo 2