1. 程式人生 > >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();

 

github