说明
这个设计模式也是比较简单, 先说一下定义: 代理模式(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();
这个设计模式主要是利用了语言的多态, 干活的是被代理类, 接活的是代理类。你可以让代理干活, 代理给幕后干, 最终事情做的漂亮就行。
本文为作者原创,手码不易,允许转载,转载后请以链接形式说明文章出处。