[PDesign Pattern]プロキシモード、ProxyPattern


最後に議論するモードはエージェントモードです!
今眠いから、くだらないことを言わないで、すぐに始めなさい.

ProxyPattern、プロキシモード


英語の単語「proxy」の意味は「代理」です
オブジェクトを使用しようとすると、オブジェクトに直接アクセスして使用するのではなく、使用するオブジェクトのプロキシロールオブジェクトからターゲットオブジェクトにアクセスする構造化されたモードをプロキシモードと呼ぶことができます.
このモードを使用する場合は何ですか?
移動、ネットワーク、または1つの画面から次の画面への移行にかかわらず、テキストがロードされ、すべてのピクチャが画面にロードされていないため、ピクチャをロードするときにピクチャ、テキストを再配置することを考慮できます.
あるいはゲーム中、私のキャラクターが死亡した場合、新しいキャラクターの復活を待つまでの時間内に、私の道具やこれまでのkill/dath記録を確認する場合もそうです.
すべての写真がロードされるまで空白の画面しか見えず、静止した画面でキャラクターの復活を待つしかないと憂鬱になります.
この場合、プロキシモードが役に立つかもしれません.

プロキシモード構造



IService

  • サービスとProxyオブジェクトのインタフェース
  • サービス(ターゲットオブジェクト)とProxyはそれぞれ
  • を実施する.

    Service


    ターゲットオブジェクト
  • は、実際の機能
  • を有する.
  • Proxyオブジェクトはこのターゲットオブジェクトを持ち、任意の目的で使用できます.

    Proxy

  • クライアントとターゲットオブジェクトとの間のロール
  • 実行方法()を実装し、クライアントがエージェントを介してサービスを呼び出す実行方法()

    コード#コード#

    protocol Print {
        func loadContent()
    }
    
    class ViewPrinter : Print {
        func loadContent() {
            print("어우, 사진 다 됐다 야! 이제 보여줄게~~")
        }
    }
    
    class ProxyPrinter : Print {
        private var viewPrinter = ViewPrinter()
        
        func loadContent() {
            print("text 먼저 출력합니다 소ㅑ라라라락")
            viewPrinter.loadContent()
        }
    }
    
    let proxy = ProxyPrinter()
    proxy.loadContent()
    実行結果はどうですか?

    プロキシモードを使用する場合


    次の3つの典型的なエージェント・モードを示します.

    仮想エージェント

  • オブジェクトの作成を必要な時点まで遅延します.オブジェクトをオブジェクトの作成のように動作させるには、
  • マスタークラスは、
  • エージェントクラスからの些細なタスクと大量のリソースを必要とするタスクを処理する場合にのみ使用される.

    リモートエージェント

  • をリモートオブジェクトの代弁者として使用
  • は、異なるアドレス空間に位置するオブジェクトの動作を同じアドレス空間にあるようにする:
  • 、例えばGoogle docs、
  • エージェントの保護

  • マスタークラスへのアクセスの制御:
  • オブジェクトへのアクセス権を制御するか、オブジェクトごとに異なるアクセス権を指定する場合は、
  • 参考資料1
    参考資料2