最新消息:

设计模式之代理模式

未分类 340浏览 0评论

基本概念:

    在客户端与实体之间建立一个代理对象(proxy),客户端对实体进行操作全部委派给代理对象,隐藏实体的具体实现细节。

应用场景:

    Mysql 主从结构,使用代理模式,业务代码不需要做任何修改就是可以实现读写分离。在proxy代理中,所有读的操作去请求从库,所有写的操作去请求主库。另外Proxy还可以与业务代码分离,部署到另一个服务器。业务代码中通过RPC来委派任务

示例代码:

class Proxy implements IUserProxy
{
    function getUsername($id)
    {
        // TODO: Implement getUsername() method.
        $db = Factory::getDatabase('slave');
        $db->query("select name from user where id=$id limit 1");
    }
    function setUsername($id, $name)
    {
        // TODO: Implement setUsername() method.
        $db = Factory::getDatabase('master');
        $db->query("update user set name=$name where id=$id limit 1");
    }
}

业务调用代理:

$proxy = new \Wecot\Proxy();
$id = 1;
$name = 'wecot';
$proxy->getUsername($id);
$proxy->setUsername($id, $name);

代理模式主要是设计思想,实现简单。

转载请注明:微刻 blog.wecot.cn » 设计模式之代理模式

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址