一、什么是代理模式
客户端对目标的操作,委派给代理对象(proxy)处理,代理对象相当于一个中介;
二、代理模式作用
隐藏目标对象,不对外暴露,解耦代码业务
三、具体实现
interface UserProxy
{
public function getUserName($id);
public function setUserName($id, $name);
}
class Proxy implements UserProxy
{
public function getUserName($id)
{
$db = Factory::getDatabase('slave'); // 从库读取
return $db->query("select name from user where id = $id limit 1");
}
public function setUserName($id, $name)
{
$db = Factory::getDatabase('master'); // 主库写入
return $db->query("update user set name = $name id = $id");
}
}
// 业务调用
$proxy = new Proxy();
$proxy->getUserName($id);
$proxy->setUserName($id, $name);