2018/11/22《大話設計模式》【代理模式】
阿新 • • 發佈:2018-11-22
最近真是忙到死......
其實還是自己偷懶了......
參考 :PHP設計模式——代理模式
一:什麼是代理模式?
- 拿生活中例子其實很容易理解
- 小王,幫我告訴下老師,今天我生病了,不能去教室了。
- 這時候,小王就是你的代理,代你去告訴老師你的事情。
- 老王,我喜歡一個女孩,你幫我把這封情書送給小靜吧。
- 老王,就是你送情書的代理。
二:為什麼要用代理模式?
- 理解了代理模式之後,我也們很清楚的明白的代理模式的用處。
- 解決了目標和物件之間的 (不方便) 等等阻礙。
- 起到了中介的作用,同時保護目標和物件。
三:代理模式的優缺點?
- 缺點
- 物件克隆,造成多餘開銷。
- 邏輯拆分
- 優點
- 程式碼清晰,高擴充套件
四:簡單實現一個代理模式?
<?php /** * Created by PhpStorm. * User: LYL * Date: 2015/5/16 * Time: 16:33 */ /**頂層介面 * Interface IGiveGift */ interface IGiveGift { function giveRose(); function giveChocolate(); }/**追求者 * Class Follower */ class Follower implements IGiveGift { private $girlName; function __construct($name='Girl') { $this->girlName=$name; } function giveRose() { echo "{$this->girlName}:這是我送你的玫瑰,望你能喜歡。"; echo PHP_EOL; } function giveChocolate() { echo"{$this->girlName}:這是我送你的巧克力,望你能收下。"; echo PHP_EOL; } } /**代理 * Class Proxy */ class Proxy implements IGiveGift { private $follower; function __construct($name='Girl') { $this->follower = new Follower($name); } function giveRose() { echo "代理送出 - "; echo PHP_EOL; $this->follower->giveRose(); } function giveChocolate() { echo "代理送出 - "; echo PHP_EOL; $this->follower->giveChocolate(); } } $proxy=new Proxy('范冰冰'); $proxy->giveRose(); $proxy->giveChocolate();