繼續分享設計模式的公開課,這是第四篇建立型模式之原型模式php
設計模式的通常介紹在第一篇文章講了,不瞭解的能夠先看看。設計模式
原型模式:
用原型實例指定建立對象的種類,而且經過拷貝這個原型來建立新的對象。
應用場景: 類的資源很是多、性能和安全要求,通常和工廠方法結合使用。安全
<?php /** * 優才網公開課示例代碼 * * 原型模式 * * @author 優才網全棧工程師教研組 * @see http://www.ucai.cn */ //聲明一個克隆自身的接口 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(); ?>
這裏能夠看到,若是類的成員變量很是多,若是由外部建立多個新對象再一個個賦值,則效率不高代碼冗餘也容易出錯,經過原型拷貝複製自身再進行微小修改就是另外一個新對象了。
設計模式的第一部分,建立型模式就總結完了。下面還有兩部分結構型設計模式和行爲型設計模式稍後繼續。性能
想了解更多,來聽公開課吧:http://www.ucai.cn/train?f=17this