1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php 元_PHP 享元模式 - 304158的个人空间 - OSCHINA - 中文开源技术交流社区

php 元_PHP 享元模式 - 304158的个人空间 - OSCHINA - 中文开源技术交流社区

时间:2019-05-15 09:39:36

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。