代理模式
- 在客户端与实体之间建立一个代理对象,客户端对实体进行操作全部委派给代理对象,隐藏实体的具体实现细节。
- 代理对象害可以与业务代码分离,部署到另外的服务器。业务代码中通过RPC来委派任务。
示例代码:
- 传统编程
<?php
$db = \TT\Factory::getDatabase('slave');
$info = $db->query("select name from user where id=1 limit 1");
$db = \TT\Factory::getDatabase('master');
$info = $db->query("update user set name='lili' where id=1 limit 1");
- 代理模式
<?php
namespace TT;
interface IUserProxy
{
function getUserName($id);
function setUserName($id, $name);
}
<?php
namespace TT;
class Proxy implements IUserProxy
{
function getUserName($id)
{
$db = \TT\Factory::getDatabase('slave');
$info = $db->query("select name from user where id=1 limit 1");
}
function setUserName($id, $name)
{
$db = \TT\Factory::getDatabase('master');
$info = $db->query("update user set name='$name' where id=1 limit 1");
}
}