プロキシ パターン定義
このオブジェクトへのアクセスを制御するために、他のオブジェクトにプロキシを提供します。場合によっては、あるオブジェクトが適切でないか、別のオブジェクトを直接参照できない場合、プロキシ オブジェクトがクライアントとターゲット オブジェクトの間の仲介者の役割を果たすことができます。
主な役割
抽象的な役割: インターフェイスまたは抽象クラスを介して、実際のロールによって実装されるビジネス メソッドを宣言します。
エージェント ロール: 抽象ロールを実装し、実際のロールのビジネス ロジック メソッドを通じて抽象メソッドを実装し、独自の操作を付加できます。
実際のロール: 抽象ロールを実装し、実際のロールによって実装されるビジネス ロジックを定義し、エージェント ロールによって呼び出されます。
利点
明確な責任
プロキシ オブジェクトはクライアントとターゲット オブジェクトの間の仲介者として機能するため、仲介者の役割を果たし、ターゲット オブジェクトを保護します。効果。
高いスケーラビリティ
プロキシ モード インスタンス
<?php //抽象角色interface IGiveGift { function giveRose(); function giveChocolate(); } //真实角色class Follower implements IGiveGift { private $girlName; function __construct($name='Girl') { $this->girlName=$name; } function giveRose() { echo "{$this->girlName}:送你的玫瑰<br/>"; } function giveChocolate() { echo "{$this->girlName}:送你的巧克力<br/>"; } } //代理角色class Proxy implements IGiveGift { private $follower; function __construct($name='Girl') { $this->follower=new Follower($name); } function giveRose() { $this->follower->giveRose(); } function giveChocolate() { $this->follower->giveChocolate(); } }$proxy=new Proxy('xxx'); $proxy->giveRose(); $proxy->giveChocolate();