原型模式(Prototype Pattern):與工廠模式類似,都是用來建立物件的。利用克隆來產生一個大對象,減少創建時的初始化等操作佔用開銷
1,有些時候,我們需要創建多個類似的大對象。如果直接通過new對象,開銷很大,而且new完還得進行重複的初始化工作。可能把初始化工作封裝起來的,但是對於系統來說,你封不封裝,初始化工作還是要執行。
2,原型模式則不同,原型模式是先創建好一個原型對象,然後透過clone這個原型對象來創建新的對象,這樣就免去了重複的初始化工作,系統僅需內存拷貝即可。
<?php /** * 原型模式 * * @author webff */ /** //声明一个克隆自身的接口 interface Prototype { function copy(); } //产品要实现克隆自身的操作 class Student implements Prototype { //简单起见,这里没有使用get set public $school; public $major; public $name; public function construct($school, $major, $name) { $this->school = $school; $this->major = $major; $this->name = $name; } public function printInfo() { printf("%s,%s,%sn", $this->school, $this->major, $this->name); } public function copy() { return clone $this; } } $stu1 = new Student('清华大学', '计算机', '张三'); $stu1->printInfo(); $stu2 = $stu1->copy(); $stu2->name = '李四'; $stu2->printInfo(); ?>
這裡可以看到,如果類別的成員變數非常多,如果由外部建立多個新物件再一個個賦值,則效率不高程式碼冗餘也容易出錯,透過原型拷貝複製自身再進行微小修改就是另一個新物件了。
以上是php設計模式-原型模式的使用與作用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!