デザインパターンにおけるプロキシパターンの役割

零下一度
リリース: 2017-06-25 13:38:38
オリジナル
2375 人が閲覧しました

1. プロキシ モードの役割

プロキシ モードの役割は、このオブジェクトへのアクセスを制御するために他のオブジェクトにプロキシを提供することです。

場合によっては、クライアントが別のオブジェクトを直接参照したくない、または参照できない場合があり、プロキシ オブジェクトがクライアントとターゲット オブジェクトの間の 仲介者 として機能することがあります。

2. プロキシ パターンに一般的に関与するロール

抽象ロール: 実オブジェクトとプロキシ オブジェクト間の共通インターフェイスを宣言します。

プロキシ ロール: プロキシ オブジェクト ロールには、実際のオブジェクトへの参照が内部的に含まれているため、実際のオブジェクトを操作できるようになります。同時に、プロキシ オブジェクトは、実際のオブジェクトと同じインターフェイスを提供して、置き換えることができます。いつでも本物のオブジェクトを。同時に、プロキシ オブジェクトは、実際のオブジェクトに対して操作を実行するときに他の操作を追加できます。これは、実際のオブジェクトをカプセル化することと同じです。

実際のロール: プロキシ ロールによって表される実際のオブジェクトは、最終的に参照したいオブジェクトです。

図: 次のプログラムは、静的プロキシを使用して大文字変換関数を実装します。

インターフェースクラス ISomeService:

package com.ietree.basicskill.designpattern.staticproxy;/**
 * 接口类
 * 
 * @author Root */public interface ISomeService {
    
    String doFirst();    void doSecond();
}
ログイン後にコピー

実装クラス SomeServiceImpl:

package com.ietree.basicskill.designpattern.staticproxy;/**
 * 实现类
 * 
 * @author Root */public class SomeServiceImpl implements ISomeService {

    @Overridepublic String doFirst() {
        System.out.println("执行doFirst()...");
        String result = "abcde";return result;
    }

    @Overridepublic void doSecond() {
        System.out.println("执行doSecond()...");
    }

}
ログイン後にコピー

プロキシクラス SomeServiceProxy:

  SomeServiceProxy =
ログイン後にコピー

テストクラス Main:

package com.ietree.basicskill.designpattern.staticproxy;public class Main {public static void main(String[] args) {        ISomeService service = new SomeServiceProxy();String result = service.doFirst();
        System.out.println(result);
        
        service.doSecond();
    }
}
ログイン後にコピー

3.まとめ

上記をフォローしたい方はメソッド (静的プロキシ) プロキシ パターンを使用すると、実際の役割はプロキシ オブジェクトの内部プロパティとしてすでに実装されている必要があります。

しかし、実際の使用では、実際の役割は代理役割に対応する必要がありますが、大量に使用すると、さらに、実際の役割が事前にわかっていない場合、クラスの急激な拡大につながります。プロキシを使用しますか?この問題は、Javaの動的プロキシクラスによって解決できます。

以上がデザインパターンにおけるプロキシパターンの役割の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート