優才公開課筆記:php設計模式 (四)之原型模式

繼續分享設計模式的公開課,這是第四篇建立型模式之原型模式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

相關文章
相關標籤/搜索