首頁 >後端開發 >php教程 >php設計模式-原型模式的使用與作用詳解

php設計模式-原型模式的使用與作用詳解

黄舟
黄舟原創
2017-07-17 16:04:541132瀏覽

原型模式(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(&#39;清华大学&#39;, &#39;计算机&#39;, &#39;张三&#39;);
$stu1->printInfo();

$stu2 = $stu1->copy();
$stu2->name = &#39;李四&#39;;
$stu2->printInfo();

?>

這裡可以看到,如果類別的成員變數非常多,如果由外部建立多個新物件再一個個賦值,則效率不高程式碼冗餘也容易出錯,透過原型拷貝複製自身再進行微小修改就是另一個新物件了。

以上是php設計模式-原型模式的使用與作用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn