PHP设计模式-代理

适用性

对对象加以【控制】

和适配器的区别:适配器是连接两个接口(【改变】了接口)

和装饰器的区别:装饰器是对现有的对象包装(【功能扩展】

代码示例

/**

* 鞋接口

*/

interface ShoesInterface

{

    public function product();

}

/**

* 滑板鞋实体

*/

class ShoesSkateboard implements ShoesInterface

{

    public function product()

    {

        echo "生产一滑板鞋";

    }

}

/**

* 运动鞋实体

*/

class ShoesSport implements ShoesInterface

{

    public function product()

    {

        echo "生产一双球鞋";

    }

}

/**

* 代理工厂

*/

class Proxy

{

    /**

    * 产品生产线对象

    */

    private $_shoes;

    /**

    * 产品生产线类型

    */

    private $_shoesType;

    /**

    * 构造函数.

    */

    public function __construct($shoesType)

    {

        $this->_shoesType = $shoesType;

    }

    /**

    * 生产.

    */

    public function product()

    {

        switch ($this->_shoesType) {

            case 'sport':

                echo "我可以偷点工";

                $this->_shoes = new ShoesSport();

                break;

            case 'skateboard':

                echo "我可以减点料";

                $this->_shoes = new ShoesSkateboard();

                break;

            default:

                throw new Exception("shoes type is not available", 404);

                break;

        }

        $this->_shoes->product();

    }

}

try {

    echo "未加代理之前:\n";

    // 生产运动鞋

    $shoesSport = new ShoesSport();

    $shoesSport->product();

    echo "\n--------------------\n";

    //-----------------------------------

    echo "加代理:\n";

    $proxy = new Proxy('sport');

    $proxy->product();

} catch (\Exception $e) {

    echo $e->getMessage();

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代...
    中v中阅读 3,188评论 0 0
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,151评论 0 10
  • 前言 前几天在GitHub看到一篇写PHP简洁之道的译文,觉得还不错,所以转在了自己的博客中,只不过有一些地方好像...
    guanguans阅读 3,680评论 3 6
  • 我觉知我感恩活着就是最大的奇迹 我觉知我感恩宇宙爱我比我爱我自己多的多的多 感恩今天开启了奇迹感恩第二轮百日行第一...
    亲爱的梁子阅读 968评论 0 0
  • #关键词#黑天鹅事件
    神棍德玛西阅读 760评论 0 0