代理模式

試著忘記壹切 提交于 2020-01-13 22:14:36
<?php
/**
 * 送礼物接口
 */
interface send_gift {
    public function send_flowers(); //送鲜花
    public function send_chocolate(); //送巧克力

}

/**
 * 小明实现了送礼物的接口
 */
class xiaoming implements send_gift {
    private $meizhi = null;
    public function __construct (meizhi $meizhi) {
        $this->meizhi = $meizhi;
    }
    public function send_flowers() {
        echo $this->meizhi->name,',送你鲜花',chr(10);
    }
    public function send_chocolate() {
        echo $this->meizhi->name,',送你巧克力',chr(10);
    }
}

/**
 * 妹纸
 */
class meizhi {
    public $name = '';
    public function __construct($name) {
        $this->name = $name;
    }
}

/**
 * 小明的经纪人也实现了送礼接口
 */
class xiaoming_proxy implements send_gift {
    private $xiaoming = null;
    public function __construct(meizhi $meizhi) {
        $this->xiaoming = new xiaoming($meizhi);
    }
    public function send_flowers() {
        echo '你好,我是小明的代理,';
        $this->xiaoming->send_flowers();
    }
    public function send_chocolate() {
        echo '你好,我是小明的代理,';
        $this->xiaoming->send_chocolate();
    }
}

$xiaoming_proxy = new xiaoming_proxy(new meizhi('叶子美女'));
$xiaoming_proxy->send_flowers();
$xiaoming_proxy->send_chocolate();

代理模式(proxy):为其它对象提供一种代理,以控制对这个对象的访问。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!