1. 在客戶端與實體之間建立一個代理對象(proxy),客戶端對實體進行的操作全部委派給代理對象,隱藏實體的具體實現細節。
2. Proxy還可以與業務代碼分離,部署到另外的服務器,業務代碼中通過RPC來委派任務。
//代理接口 interface Proxy { public function getUserName($id); public function setUserName($id, $newName); } //用戶操作代理實現 class UserProxy implements Proxy { //讀操作 public function getUserName($id) { return Factory::getDataBase('slave')->find($id); } //寫操作 public function setUserName($id, $newName) { return Factory::getDataBase('master')->data(['name' => $newName])->where(['id' => $id]) } } //代理模式:數據庫主從,通過代理設置主從讀寫設置。 $proxy = new UserProxy(); $proxy->getUserName(1); $proxy->setUserName(1, '張三');