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