网页标准化设计使用的优势
- 时间:
- 地点:
2023最新开源城市站群cms系统【万站巅云站群CMS系统源码程序】
精美大气网络公司网站模板,网络公司网站源码,专业网络公司网页设计
西部数码代理平台模板 -西部数码代理价格自动获取
最新一键建站系统源码,saas建站系统源码,自助建站整站源码,站长源码,自助建站系统源码,源码搭建教程,开源自助建站系统,php智能建站系统,可视化网站框架源码
最新首发自助建站系统源码,傻瓜式一键建站系统源码,高度开源支持专业在线自助建站服务平台搭建
巅云拖拽式VUE前端框架4.0,可视化拖拽编辑器,实现了h5可视化拖拽生成工具,前端大屏布局,组件化模板机制
在初始化实例成本高,实例化率高,可用实例不足的情况下,对象池可以极大地提升性能。在创建对象(尤其是通过网络)时间花销不确定的情况下,通过对象池在可期时间内就可以获得所需的对象。
无论如何,对象池模式在需要耗时创建对象方面,例如创建数据库连接,套接字连接,线程和大型图形对象(比方字体或位图等),使用起来都是大有裨益的。在某些情况下,简单的对象池(无外部资源,只占内存)可能效率不高,甚至会有损性能。
WorkerPool.php
<?php namespace DesignPatternsCreationalPool; class WorkerPool implements Countable { /** * @var StringReverseWorker[] */ private $occupiedWorkers = []; /** * @var StringReverseWorker[] */ private $freeWorkers = []; public function get(): StringReverseWorker { if (count($this->freeWorkers) == 0) { $worker = new StringReverseWorker(); } else { $worker = array_pop($this->freeWorkers); } $this->occupiedWorkers[spl_object_hash($worker)] = $worker; return $worker; } public function dispose(StringReverseWorker $worker) { $key = spl_object_hash($worker); if (isset($this->occupiedWorkers[$key])) { unset($this->occupiedWorkers[$key]); $this->freeWorkers[$key] = $worker; } } public function count(): int { return count($this->occupiedWorkers) + count($this->freeWorkers); } }
StringReverseWorker.php
<?php namespace DesignPatternsCreationalPool; class StringReverseWorker { /** * @var DateTime */ private $createdAt; public function __construct() { $this->createdAt = new DateTime(); } public function run(string $text) { return strrev($text); } }
Tests/PoolTest.php
<?php namespace DesignPatternsCreationalPoolTests; use DesignPatternsCreationalPoolWorkerPool; use PHPUnitFrameworkTestCase; class PoolTest extends TestCase { public function testCanGetNewInstancesWithGet() { $pool = new WorkerPool(); $worker1 = $pool->get(); $worker2 = $pool->get(); $this->assertCount(2, $pool); $this->assertNotSame($worker1, $worker2); } public function testCanGetSameInstanceTwiceWhenDisposingItFirst() { $pool = new WorkerPool(); $worker1 = $pool->get(); $pool->dispose($worker1); $worker2 = $pool->get(); $this->assertCount(1, $pool); $this->assertSame($worker1, $worker2); } }
以上就是浅谈PHP设计模式之对象池模式Pool的详细内容,更多关于PHP设计模式之对象池模式Pool的资料请关注IT博客社区其它相关文章!
notmore
联系我们
合作或咨询可通过如下方式:
QQ/微信:123456
网址:www.xxxx.cn
微信公众号:车展门票
关于本站
Copyright 车展网 www.xxxx.cn Reserved渝ICP备xxxxxxxx号
关注我们