php 元_PHP 享元模式 - 304158的个人空间 - OSCHINA - 中文开源技术交流社区
/**
* 享元模式
* 共享子系統
* 抽象子系統實現接口
* 根據key儲存對應的子系統實例
*/
/**
* Interface ServiceIO
* 共享子系統抽象接口
*/
interface ServiceIO {
public function GetServiceName();
}
/**
* Class WebService
* 子系統 實例
*/
class WebService implements ServiceIO {
private $_name;
function __construct($str)
{
$this->_name = $str;
}
public function GetServiceName()
{
echo 'WEB-API :'.$this->_name.PHP_EOL;
// TODO: Implement serviceName() method.
}
}
/**
* Class Enjoy
* 享元池類
*/
class Enjoy
{
protected static $_enjoyPool;
function __construct()
{
if (!isset($this->_enjoyPool)){
self::$_enjoyPool = [];
}
}
public function GetPool ($serviceName) {
if (!isset(self::$_enjoyPool[$serviceName])) {
$fw = new WebService($serviceName);
self::$_enjoyPool[$serviceName] = $fw;
return $fw;
}else{
// 已經存在直接返回
echo "已存在".$serviceName.PHP_EOL;
return self::$_enjoyPool[$serviceName];
}
}
}
$obj = new Enjoy();
$obj1=$obj->GetPool('service1'); // 從享元池里獲取對象,如果沒有則創建返回
$obj2=$obj->GetPool('service2');
$obj1->GetServiceName(); //WEB-API :service1 // 對應的key取出的對象
$obj2->GetServiceName(); //WEB-API :service2
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的php 元_PHP 享元模式 - 304158的个人空间 - OSCHINA - 中文开源技术交流社区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [实战]前端wireshark抓包协议解
- 下一篇: Php如何过360拦截,PHP常见漏洞修