[PHP] 对象池模式-创建型设计模式
发布时间:2021-05-21 06:55:01 所属栏目:大数据 来源: https://www.jb51.cc
导读:最重要的特征是,有两个数组存对象,忙的数组和闲的数组. 当使用对象后,不是立即销毁对象,而是放回池子闲的数组里面,下次使用直接拿,拿到后放到忙的数组里.当拿不到的时候就再创建新 ? class WorkerPool{ /* * * @var 忙的数组 */ private array $occupiedWork
最重要的特征是,有两个数组存对象,忙的数组和闲的数组. ? class WorkerPool { /** * @var 忙的数组 */ private array $occupiedWorkers = []; * * @var 清闲的数组 private array $freeWorkers = []; //拿对象 public function get(): MyObj { if (count($this->freeWorkers) == 0) { $worker = new MyObj(); } else { $worker = array_pop($this->freeWorkers); } $this->occupiedWorkers[spl_object_hash($worker)] = $worker; return $worker; } 放回对象 public function dispose(MyObj $worker) { $key = spl_object_hash($worker); if (isset($occupiedWorkers[$key])) { unset($occupiedWorkers[$key]); $this->freeWorkers[$key] = $worker; } } public function count(): int { return count($this->occupiedWorkers) + count($freeWorkers); } } $pool = WorkerPool(); $worker1 = $pool->(); $pool->dispose($worker1); $worker2 = $pool->get(); ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |