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