<?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):为其它对象提供一种代理,以控制对这个对象的访问。