通過創建一個原型物件,然后復制原型物件來避免通過標準的方式創建大量的物件產生的開銷(new Foo()),
大量的資料物件(比如通過ORM獲取1,000,000行資料庫記錄然后創建每一條記錄對應的物件物體)
帶構造方法、屬性的類,clone的性能要比new帶上構造引數的性能高不少
這個就是原型,子類繼承這個原型來搞,就是原型模式
abstract class BookPrototype { protected string $title; protected string $category; abstract public function __clone(); public function getTitle(): string { return $this->title; } public function setTitle(string $title) { $this->title = $title; } } class BarBookPrototype extends BookPrototype { protected string $category = 'Bar'; public function __clone() { } }
比如有回圈創建物件的情況
$fooPrototype = new FooBookPrototype(); for ($i = 0; $i < 10; $i++) { $book = clone $fooPrototype; $book->setTitle('Foo Book No ' . $i); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/172121.html
標籤:PHP
