home > デザインパターン >

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

Objective-C

D

VB

VB.NET

Delphi

Ada

PL/SQL

T-SQL

関数型

inserted by FC2 system