#Proxy
Proxyクラスに特定のクラスのタスクを代行させる
Proxyクラスで処理できないタスクは特定クラスに委譲するというメソッドを持たせる
特定クラスのインスタンスは、特定クラスにタスクを委譲するまで生成しない
このページでは下記を記載します
・Proxy Pattern の構造確認
・実装
Design Pattarm MENU
##Proxy Pattern の構造確認
以下のクラス構成で確認します
クラス | 説明 |
---|---|
sam.class | Proxyが代行するクラス |
samProxy.class | sam.classのタスクを代行する |
sam.class
class sam{
void sm1(){}
void sm2(){}}
samProxy.class
class samProxy{
sam sam;
void sm1(){}
void sm2(){sam.sm2();} //samクラスにタスクを委譲します。この直前でsamインスタンスを生成
}
##実装
interfaceにあるsm1()はsamProxyクラスで処理できるタスク
interfaceにあるsm2()はsamProxyクラスでは処理できないタスク
とします
s.interface
interface s{
void sm1();
void sm2();
}
sam.class
class sam implements s{
public void sm1(){System.out.println("sam1");}
public void sm2(){System.out.println("sam2");}
}
samProxy.class
class samProxy implements s{
sam sam;
public void sm1(){System.out.println("proxy1");}
public void sm2(){ // samProxyで処理できないタスクをsamに委譲する、というメソッド
if(sam == null){ // samインスタンスが必要となった時に、samインスタンスを生成する
sam = new sam();
sam.sm2();}
}}
user(Main.class)
public static void main(String[] args){
s s = new samProxy();
s.sm2();
}}