php设计模式——代理模式
代理模式
- 介绍
- 在客户端与实体之间建立一个代理对象(proxy),客户端对实体进行操作全部委派给代理对象,隐藏实体的具体实现细节。
- 代理对象(proxy)还可以与业务代码分离,部署到另外的服务器。业务代码中通过RPC来委派任务
- 简述
代理模式(Proxy Pattern) ,顾名思义,重点就是代理。也就是表示,给某一个对象提供一个代理,并由代理对象控制对原对象的引用。
案例
代码
<?php /* * 代理模式 */ //代理抽象接口 interface shop { public function buy($title); } //原来的CD商店,被代理对象 class CDShop implements shop { public function buy($title) { echo "购买成功,这是你的《{$title}》唱片" . PHP_EOL; } } //CD代理 class Proxy implements shop { public function buy($title) { $this->go(); $CDshop = new CDshop; $CDshop->buy($title); } public function go() { echo "跑去香港代购" . PHP_EOL; } } // 客户端 class client { public static function shoping($goods) { $proxy = new Proxy; $proxy->buy($goods); } } client::shoping("醒着做梦"); //输出结果 '跑去香港代购 购买成功,这是你的《醒着做梦》唱片'
- 代码说明
首先代理模式都需要继承一个共用的接口,这里只有CDShop(CD商店)和Proxy (CD代理)这两个类来继承一个共用接口shop,并且其中都有一个共同的方法buy。
那么上述代码我们可以这样理解,当我们想要购买一张“醒着做梦”的唱片,但是由于本地没有资源,只能选择香港代理帮忙代购。这里我们就可以通过客户端来实例化代理Proxy,再调用代理中的购买方法buy。
然后代理可以通过go方法表示“跑去香港代购”,再new实例化CDshop,再通过其中buy方法来“购买唱片”
文章目录