说明
这个设计模式也是比较简单, 先说一下定义: 代理模式(Proxy Pattern) :给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式。
代理就是面向客户的, 意思就是代理对象负责接受客户任务, 但是其实并不是真正工作的, 中间商罢了。再不懂来看看🌰
示例
比方说 客户需要买电脑和修电脑 但是客户并不知道哪里可以有 但是后面他找到了一个人, 他说可以干这个事情, 但是这个人并不会这两个东西, 他可能是电脑商店的代理
<?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();
这个设计模式主要是利用了语言的多态, 干活的是被代理类, 接活的是代理类。你可以让代理干活, 代理给幕后干, 最终事情做的漂亮就行。