淺析php原型模式
原型模式:
用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這個原型來創(chuàng)建新的對象。
應(yīng)用場景: 類的資源非常多、性能和安全要求,一般和工廠方法結(jié)合使用。
<?php
/**
* 原型模式
*/
//聲明一個克隆自身的接口
interface Prototype {
function copy();
}
//產(chǎn)品要實現(xiàn)克隆自身的操作
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('清華大學(xué)', '計算機', '張三');
$stu1->printInfo();
$stu2 = $stu1->copy();
$stu2->name = '李四';
$stu2->printInfo();
?>
這里可以看到,如果類的成員變量非常多,如果由外部創(chuàng)建多個新對象再一個個賦值,則效率不高代碼冗余也容易出錯,通過原型拷貝復(fù)制自身再進行微小修改就是另一個新對象了。
設(shè)計模式的第一部分,創(chuàng)建型模式就總結(jié)完了。下面還有兩部分結(jié)構(gòu)型設(shè)計模式和行為型設(shè)計模式稍后繼續(xù)。
- 學(xué)習(xí)php設(shè)計模式 php實現(xiàn)原型模式(prototype)
- php設(shè)計模式 Prototype (原型模式)代碼
- php設(shè)計模式之原型模式分析【星際爭霸游戲案例】
- PHP設(shè)計模式之原型模式定義與用法詳解
- php示例詳解Constructor Prototype Pattern 原型模式
- PHP設(shè)計模式(三)建造者模式Builder實例詳解【創(chuàng)建型】
- PHP設(shè)計模式(一)工廠模式Factory實例詳解【創(chuàng)建型】
- PHP設(shè)計模式概論【概念、分類、原則等】
- PHP設(shè)計模式之 策略模式Strategy詳解【對象行為型】
- PHP設(shè)計模式(四)原型模式Prototype實例詳解【創(chuàng)建型】
相關(guān)文章
php+croppic.js實現(xiàn)剪切上傳圖片功能
最近做項目遇到這樣的需求,需要實現(xiàn)裁剪圖片上傳,接下來通過本文給大家分享基于php+croppic.js實現(xiàn)剪切上傳圖片功能,需要的朋友可以參考下2018-08-08關(guān)于PHP 如何用 curl 讀取 HTTP chunked 數(shù)據(jù)
通過本文給大家介紹php用curl讀取http chunked數(shù)據(jù)的方法,本文介紹的非常詳細,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-02-02Codeigniter框架的更新事務(wù)(transaction)BUG及解決方法
這篇文章主要介紹了Codeigniter框架的更新事務(wù)(transaction)BUG及解決方法,具體BUG和解決辦法在文中有詳細描述,需要的朋友可以參考下2014-07-07關(guān)于php微信訂閱號開發(fā)之token驗證后自動發(fā)送消息給訂閱號但是沒有消息返回的問題
最近做了個項目,當token驗證之后,發(fā)送消息給訂閱號,但是沒有消息返回,下面小編通過本篇文章給大家分享我的解決辦法2015-12-12對于ThinkPHP框架早期版本的一個SQL注入漏洞詳細分析
這篇文章主要介紹了對于ThinkPHP框架早期版本的一個SQL注入漏洞詳細分析,對于網(wǎng)站安全十分重要!需要的朋友可以參考下2014-07-07