代理模式:爲其餘對象提供一種代理以控制對這個對象的訪問。php
【代理模式中主要角色】this
抽象主題角色:聲明瞭代理主題和真實主題的公共接口,使任何須要真實主題的地方都能用代理主題代替。代理
代理主題角色:含有真實主題的引用,從而能夠在任什麼時候候操做真實主題,代理主題功過提供和真實主題相同的接口,使它能夠隨時代替真實主題。代理主題經過持有真實主題的引用,不但能夠控制真實主題的建立或刪除,能夠在真實主題被調用前進行攔截,或在調用後進行某些操做。對象
真實代理對象:定義了代理角色所表明的具體對象。blog
interface Person{ public function playGame(); public function kill(); } class Gaoshou implements Person { # 代理主題角色 public function playGame(){ echo "我是王者<br/>"; } public function kill(){ echo "penta kill<br/>"; } } class Proxy implements Person { # 代理 protected $obj; public function __construct(Person $obj) { $this->obj = $obj; } public function playGame() { $this->obj->playGame(); } public function kill() { $this->obj->kill(); } } $obj = new Proxy(new Gaoshou()); $obj->playGame(); $obj->kill();
輸出:接口
我是王者
penta killio