摘要:繼續分享設計模式的公開課,這是第四篇創建型模式之原型模式設計模式的一般介紹在第一篇文章講了,不了解的可以先看看。設計模式的第一部分,創建型模式就總結完了。下面還有兩部分結構型設計模式和行為型設計模式稍后繼續。
繼續分享設計模式的公開課,這是第四篇創建型模式之原型模式
設計模式的一般介紹在第一篇文章講了,不了解的可以先看看。
原型模式:
用原型實例指定創建對象的種類,并且通過拷貝這個原型來創建新的對象。
應用場景: 類的資源非常多、性能和安全要求,一般和工廠方法結合使用。
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=17
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/20768.html
摘要:最近開展了三次設計模式的公開課,現在來總結一下設計模式在中的應用,這是第一篇創建型模式之單例模式。不過因為不支持多線程所以不需要考慮這個問題了。 最近開展了三次設計模式的公開課,現在來總結一下設計模式在PHP中的應用,這是第一篇創建型模式之單例模式。 一、設計模式簡介 首先我們來認識一下什么是設計模式: 設計模式是一套被反復使用、容易被他人理解的、可靠的代碼設計經驗的總結。 設計模式不...
摘要:但本質是,簡單工廠并未嚴格遵循設計模式的開閉原則,當需要增加新產品時也需要修改工廠代碼。但是工廠方法則嚴格遵守開閉原則,模式只負責抽象工廠接口,具體工廠交給客戶去擴展。 最近開展了三次設計模式的公開課,現在來總結一下設計模式在PHP中的應用,這是第二篇創建型模式之工廠模式。 設計模式的一般介紹在第一篇文章講了,這里就不重復。 工廠模式 實現:定義一個用于創建對象的接口,讓子類決定實...
摘要:繼續分享設計模式的公開課,這是第三篇創建型模式之創建者模式設計模式的一般介紹在第一篇文章講了,不了解的可以先看看。 繼續分享設計模式的公開課,這是第三篇創建型模式之創建者模式 設計模式的一般介紹在第一篇文章講了,不了解的可以先看看。 創建者模式: 在創建者模式中,客戶端不再負責對象的創建與組裝,而是把這個對象創建的責任交給其具體的創建者類,把組裝的責任交給組裝類,客戶端支付對對象的...
摘要:我們分三篇文章來總結一下設計模式在中的應用,這是第一篇創建型模式。二提煉設計模式的幾個原則開閉原則模塊應對擴展開放,而對修改關閉。工廠模式實現定義一個用于創建對象的接口,讓子類決定實例化哪一個類。設計模式的第一部分,創建型模式就總結完了。 我們分三篇文章來總結一下設計模式在PHP中的應用,這是第一篇創建型模式。一、設計模式簡介 首先我們來認識一下什么是設計模式: 設計模式是一套被反復使...
摘要:能夠協調調用者和被調用者,能夠在一定程度上降低系統的耦合性。特點低耦合性,獨立性好,安全性應用客戶訪問不到或者被訪問者希望隱藏自己,所以通過代理來訪問自己。 我們接著上面的幾種模式繼續講: 4、組合模式 將對象組合成樹形結構表示部分-整體的層次結構。 特點:靈活性強 應用:對象的部分-整體的層次結構,模糊組合對象和簡單對象處理問題 代碼實現 /** 組合模式* *///繼承模式clas...
閱讀 2513·2021-11-15 11:38
閱讀 1962·2021-11-05 09:37
閱讀 2286·2021-10-08 10:12
閱讀 2819·2019-08-30 15:55
閱讀 2122·2019-08-30 15:52
閱讀 1231·2019-08-29 13:24
閱讀 472·2019-08-26 18:27
閱讀 1483·2019-08-26 18:27