摘要:總結工廠類必須有一個工廠方法工廠方法必須能夠返回一個其他類的實例一次只能創建和返回一個實例三設計模式匯總設計模式匯總相關文章設計模式之單例模式的一個技術棧后端猿的知識儲備大綱設計模式之工廠模式單例模式注冊樹模式
一、單例模式 1.什么是單例模式:Learning PHP Design Patterns.設計模式的宗旨就是重用,應用設計模式可以使我們的代碼更加優雅、簡潔、低耦合。
一個類最多只能產生一個對象,如果希望在系統中某個類(鏈接數據庫的類)的對象只能存在一個,單例模式是最好的解決方案。
2.單利模式的實現:三私一公①私有化構造方法:防止實例化
②私有化克隆方法:防止克隆
③私有化靜態屬性:保存對象
④私有化靜態方法:獲取對象
class Singleton{ private static $obj;//私有化靜態屬性 private function __construct(){ //私有化構造方法 } private function __clone(){ //私有化克隆方法 } //靜態方法產生對象 static public function getInstance(){ //對象不存在new一個對象 if(!is_object(self::$obj)){ self::$obj = new Singleton(); } return self::$obj; } }4.測試單例模式
//無法實例化,可以防止new實例化這個類,強制使用getInstance方法,創建對象 $obj1 = new Singleton; var_dump($obj1); //成功獲取對象 $obj2 = Singleton::getInstance(); var_dump($obj2); //無法克隆 $obj3 = clone $obj2; var_dump($obj3);二、工廠模式
這也是一個很基本,很簡單,很常用的設計模式。
本來我們要獲取一個類的實例,需要用到new關鍵字。但是如果new 直接寫到業務代碼里,一個類在很多地方都實例化過,以后要是這個類出了什么問題,比如要改個名字(實際中,你更多的可能是修改構造函數方法),那么就尷尬了,需要改很多地方。
工廠模式,顧名思義,就是不用new來獲得實例,而是把業務類放進一個工場類里,由工廠(類)『生產』出對應的實例。
實現SimpleFactory.php
Bicycle.php
使用$factory = new SimpleFactory(); $bicycle = $factory->createBicycle(); $bicycle->driveTo("Paris");我們需要什么樣的實例,就到工廠的實例方法里去拿。這里只定義了一個類的實例,你可以定義更多。
我們看到,業務代碼里沒有出現 new以及那個具體的業務類, 這樣 業務類(class Bicycle)我們可以隨便改,以后更新的時候只要在工廠類(class SimpleFactory)里修改一次,就可以一對多的在各處生效了。
但是,這個方法名字 $factory->createBicycle(); 你得起好,如果你要改這個名字,還是得到多個地方改的。
總結
工廠的作用,簡而言之,就是在工廠里邊創建業務需要的實例對象,然后,在業務層創建工廠對象調用里邊相關的創建對象方法即可。工廠類必須有一個工廠方法;
工廠方法必須能夠返回一個其他類的實例;
一次只能創建和返回一個實例;
三、PHP設計模式匯總PHP設計模式匯總
相關文章:
php設計模式之單例模式
TIGERB的:一個php技術棧后端猿的知識儲備大綱
php 設計模式之工廠模式、單例模式、注冊樹模式
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22189.html
摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節我們介紹了...
摘要:日期和時間使用類完成讀取設置比較和計算日期與時間。單元測試單元測試是從編寫開始,貫穿于整個開發周期的一種用于保證函數類和方法的行為與預期一致的編程方法。是應用的單元測試框架的業界標準,其他幾個可選框架是行為驅動開發行為驅動開發有兩種方式和。 《php之道》閱讀地址:http://wulijun.github.io/php-the-right-way/#code_style_guide ...
摘要:個人也建議不要滿足于自己當下所知道的,多去拓展自己,多去學新的東西。作為一個面試者來說,知識點的記憶準備為的是更好的應對面試中技術面中問到的各種問題。 你好,是我琉憶——PHP程序員面試筆試系列圖書的作者。 隨著越來越多的人開始邁入PHP開發工程師的隊列,不管是一個PHP新手還是一個有一兩年開發經驗的PHPer都不得不去面對找工作前面試這件事。 我現在以個人對面試的經歷和見解來全面的對...
摘要:通過輸入任何錯誤的命令行,均可獲得類似單詞的正確命令行。倘若您對本文有興趣,建議常用,以便最快獲得結果。并沒有看到任何優雅之處。表單請求驗證器事件一句話簡述簡單實現的觀察者模式設計模式的一種。表單請求驗證器在下添加事件和監聽器。 通過輸入任何錯誤的 Artisan 命令行,均可獲得類似單詞的 Artisan 正確命令行。倘若您對本文有興趣,建議常用 Ctrl+F,以便最快獲得結果。并沒...
閱讀 2907·2021-10-19 10:09
閱讀 3126·2021-10-09 09:41
閱讀 3371·2021-09-26 09:47
閱讀 2687·2019-08-30 15:56
閱讀 590·2019-08-29 17:04
閱讀 979·2019-08-26 11:58
閱讀 2505·2019-08-26 11:51
閱讀 3353·2019-08-26 11:29