0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Proxy Pattern

Last updated at Posted at 2020-11-06

#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();
}}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?