最重要的特征是,有兩個陣列存物件,忙的陣列和閑的陣列.
當使用物件后,不是立即銷毀物件,而是放回池子閑的陣列里面,下次使用直接拿,拿到后放到忙的陣列里.當拿不到的時候就再創建新
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($this->occupiedWorkers[$key])) { unset($this->occupiedWorkers[$key]); $this->freeWorkers[$key] = $worker; } } public function count(): int { return count($this->occupiedWorkers) + count($this->freeWorkers); } } $pool = new WorkerPool(); $worker1 = $pool->get(); $pool->dispose($worker1); $worker2 = $pool->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/172120.html
標籤:PHP
