《设计模式 - 代理模式》

最近真是忙到死......

其实还是自己偷懒了......

参考 :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

 

posted @ 2018-11-22 20:19  Zzz哈  Views(115)  Comments(0Edit  收藏  举报