免責事項: この一連のブログの参考資料は、Cheng Jie 著の「Dahua Design Pattern」です。
プロキシ パターンは、他のオブジェクトがこのオブジェクトへのアクセスを制御するためのプロキシを提供します。場合によっては、あるオブジェクトが適切でないか、別のオブジェクトを直接参照できない場合、プロキシ オブジェクトがクライアントとターゲット オブジェクトの間の仲介者として機能することがあります。
UML クラス図:
役割の紹介:
抽象テーマの役割 (IGive Gift): フォロワーとプロキシのパブリック インターフェイスを定義し、フォロワーが使用される場所であればどこでもプロキシを使用できるようにします。 (色 Follower: Proxy によって表現される実体を定義します。
プロキシ オブジェクト (Proxy): プロキシがエンティティにアクセスできるように参照を保存し、エンティティ (Follower) の代わりにプロキシを使用できるように、Follower インターフェイスと同じインターフェイスを提供します。
1. 明確な責任
本当の役割は実際のビジネスロジックを実装することであり、他の非責任を心配する必要はありません トランザクションは後のエージェントを通じて完了し、それに伴う結果は次のようになりますシンプルでわかりやすいプログラミング。
2. プロキシ オブジェクトは、クライアントとターゲット オブジェクトの間の仲介者として機能し、ターゲット オブジェクトを仲介して保護します。
3. 高いスケーラビリティ
1) リモート プロキシは、異なるアドレス空間にあるオブジェクトにローカル プロキシ オブジェクトを提供します。この異なるアドレス空間は同じホスト内に存在できますが、別のホスト内では、リモート エージェントはアンバサダー (Ambassador) 2) 仮想プロキシとも呼ばれ、必要に応じて多額の費用が発生します。必要な場合は、大量のリソースを消費するオブジェクトを作成するには、まずそれを表す比較的少量のリソースを消費するオブジェクトを作成します。実際のオブジェクトは必要な場合にのみ作成されます。
3) 保護プロキシは、元のオブジェクトへのアクセスを制御します。保護プロキシは、オブジェクトに異なるアクセス権が必要な場合に使用されます。
4) スマート参照は、オブジェクトにアクセスするときにいくつかの追加操作を実行する単純なポインターを置き換えます。5) コピーオンライト エージェント: クライアントが本当に必要とする場合にのみ実行されるまで、コピー (クローン) 操作を遅らせる仮想エージェントの一種です。
一般に、オブジェクトのディープ クローン作成はコストのかかる操作であり、コピーオンライト プロキシによってこの操作が遅延する可能性があり、オブジェクトは使用されたときにのみクローン作成されます。
PHP オブジェクト指向デザインパターン