代理模式
//抽象接口用于付给机场
interface Air
{
function run($goods);
}
//真正的实现
class AirTicket implements Air
{
function run($goods)
{
echo "买到".$goods;
}
}
//(new AirTicket)->run("机票"); //不破坏原本的接口类
//机票代理
class Proxy implements Air
{
private $airTicket;
function __construct($obj)
{
$this->airTicket = $obj; //第 步 __construct在该类实例化的时候即将类注入进来(或者使用注解的方式将类注入进来)
}
function run($goods)
{
if ($this->airTicket != null) {
$this->airTicket->run($goods); //动态代理
}
}
function start($goods)
{
$this->run($goods); //第二部调起该方法
}
}
class Client {
public static function run($goods)
{
$AirTicket = new AirTicket();
$proxy = new Proxy($AirTicket);
$proxy->start($goods);//第一步将 AirTicket这个类,传入代理类,调用代理类的方法。
}
}
Client::run("机票");