<?php
// 在客户端与实体之间建立 一个代理对象(proxy),客户端对实体进行操作全部委托给代理对照,隐藏实体的具体实现细节
// Proxy 还可以与业务代码分离,部署到另外的服务器。业务代码中通过 RPC 来委派任务
//典型的应用场景:MYSQL 的主从读取分离
interface IUserProxy
{
public function getUserName();
public function setUserName();
}
class Database
{
private $name;
public function __construct($confName)
{
echo "confName = $confName\n";
$this->name = $confName;
}
public function getInfo()
{
return $this->name;
}
}
class Factory
{
public static function getDatabase($confName)
{
return new Database($confName);
}
}
class Proxy implements IUserProxy
{
public function getUserName()
{
$handle = Factory::getDatabase('slave');
echo "info = " . $handle->getInfo();
}
public function setUserName()
{
$handle = Factory::getDatabase('master');
echo "info = " . $handle->getInfo();
}
}
$proxy = new Proxy;
$proxy->getUserName();
$proxy->setUserName();
PHP 设计模式之代理模式
最新推荐文章于 2020-07-13 20:49:21 发布