前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式 | 代理模式

设计模式 | 代理模式

作者头像
憧憬博客
发布2020-07-20 17:13:18
2630
发布2020-07-20 17:13:18
举报
文章被收录于专栏:憧憬博客分享憧憬博客分享

说明

这个设计模式也是比较简单, 先说一下定义:  代理模式(Proxy Pattern) :给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式。

代理就是面向客户的, 意思就是代理对象负责接受客户任务, 但是其实并不是真正工作的, 中间商罢了。再不懂来看看?

示例

比方说 客户需要买电脑和修电脑 但是客户并不知道哪里可以有 但是后面他找到了一个人, 他说可以干这个事情, 但是这个人并不会这两个东西, 他可能是电脑商店的代理

代码语言:javascript
复制
<?php
/**
 * Created by 憧憬.
 */


/**
 * 电脑商店约束
 * Interface ComputerShop
 */
interface ComputerShop {

    // 修理电脑
    public function repair();


    // 出售电脑
    public function sell();
}


/**
 * Dell 电脑商店
 * Class DellComputerShop
 */
class DellComputerShop implements ComputerShop {

    public function repair()
    {
        echo 'dell 电脑修理';
    }

    public function sell()
    {
        echo 'dell 电脑出售';
    }
}


/**
 * mac 电脑商店
 * Class MacComputerShop
 */
class MacComputerShop implements ComputerShop {
    public function repair()
    {
        echo 'mac 电脑修理';
    }

    public function sell()
    {
        echo 'mac 电脑出售';
    }

}

/**
 * 代理人
 * Class Proxy
 */
class Proxy implements ComputerShop
{
    public $computerShop;

    /**
     * Proxy constructor.
     * @param $computerShop
     */
    public function __construct(ComputerShop $computerShop)
    {
        $this->computerShop = $computerShop;
    }

    public function repair()
    {
        $this->computerShop->repair();
    }

    public function sell()
    {
        $this->computerShop->sell();
    }
}

//$dellProxy = new Proxy(new MacComputerShop());
$dellProxy = new Proxy(new DellComputerShop());

$dellProxy->repair();

这个设计模式主要是利用了语言的多态, 干活的是被代理类, 接活的是代理类。你可以让代理干活, 代理给幕后干, 最终事情做的漂亮就行。

本文为作者原创,手码不易,允许转载,转载后请以链接形式说明文章出处。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档