真实类和代理类实现同一接口, 在代理类中, 除了如实反映真实类的方法, 还可以添加其它逻辑, 不会影响到真实类, 代理模式可以做到解耦
<?php
interface People
{
public function say();
}
class Man implements People
{
public function say()
{
return 'man';
}
}
class Proxy implements People
{
private $man;
public function __construct()
{
$this->man = new Man();
}
public function say()
{
// 增加代理类的逻辑
echo 'proxy';
// 调用真实类的方法
return $this->man->say();
}
}
$proxy = new Proxy();
echo $proxy->say();
运行结果
proxyman