PHP 設(shè)計模式---原型模式

原型模式(Prototype Pattern):與工廠模式類似,都是用來創(chuàng)建對象的勋又。利用克隆來生成一個大對象涯穷,減少創(chuàng)建時的初始化等操作占用開銷

為什么需要原型模式

1,有些時候柱恤,我們需要創(chuàng)建多個類似的大對象数初。如果直接通過new對象,開銷很大梗顺,而且new完還得進行重復(fù)的初始化工作泡孩。可能把初始化工作封裝起來的寺谤,但是對于系統(tǒng)來說仑鸥,你封不封裝,初始化工作還是要執(zhí)行变屁。
2眼俊,原型模式則不同,原型模式是先創(chuàng)建好一個原型對象粟关,然后通過clone這個原型對象來創(chuàng)建新的對象疮胖,這樣就免去了重復(fù)的初始化工作,系統(tǒng)僅需內(nèi)存拷貝即可。

<?php
/**
* 原型模式
*
* @author webff
*/
/**

//聲明一個克隆自身的接口
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ù)制自身再進行微小修改就是另一個新對象了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巩梢,一起剝皮案震驚了整個濱河市创泄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌括蝠,老刑警劉巖鞠抑,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忌警,居然都是意外死亡搁拙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門法绵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箕速,“玉大人,你說我怎么就攤上這事朋譬⊙尉ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵徙赢,是天一觀的道長字柠。 經(jīng)常有香客問我,道長狡赐,這世上最難降的妖魔是什么窑业? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮枕屉,結(jié)果婚禮上常柄,老公的妹妹穿的比我還像新娘。我一直安慰自己搀擂,他們只是感情好拐纱,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哥倔,像睡著了一般秸架。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咆蒿,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天东抹,我揣著相機與錄音蚂子,去河邊找鬼。 笑死缭黔,一個胖子當(dāng)著我的面吹牛食茎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播馏谨,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼别渔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惧互?” 一聲冷哼從身側(cè)響起哎媚,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喊儡,沒想到半個月后拨与,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡艾猜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年买喧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匆赃。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡淤毛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出算柳,到底是詐尸還是另有隱情钱床,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布埠居,位于F島的核電站,受9級特大地震影響事期,放射性物質(zhì)發(fā)生泄漏滥壕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一兽泣、第九天 我趴在偏房一處隱蔽的房頂上張望绎橘。 院中可真熱鬧,春花似錦唠倦、人聲如沸称鳞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冈止。三九已至,卻和暖如春候齿,著一層夾襖步出監(jiān)牢的瞬間熙暴,已是汗流浹背闺属。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留周霉,地道東北人掂器。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像俱箱,于是被迫代替她去往敵國和親国瓮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容