摘要:連接郵件服務(wù)器的類(lèi)可以連接郵件服務(wù)器的方法有,此時(shí)可以寫(xiě)一個(gè)工廠類(lèi)負(fù)責(zé)實(shí)例化這幾種連接方法,如果某一天對(duì)方增加了連接方法,那么直接在工廠類(lèi)里做相應(yīng)的修改即可。擴(kuò)展性高,如果想增加一個(gè)產(chǎn)品,只要擴(kuò)展一個(gè)工廠類(lèi)或者是修改工廠的生產(chǎn)過(guò)程即可。
定義
工廠模式的使用頻率比較高。它的定義為:定義一個(gè)類(lèi),該類(lèi)主要負(fù)責(zé)系統(tǒng)的去實(shí)例化一些其它的類(lèi)。通俗點(diǎn)說(shuō)就是,你告訴我你需要哪個(gè)類(lèi)的實(shí)例即可,其它的你不用管,我?guī)湍闳?shí)例化,你只管用即可。
工廠對(duì)象可能會(huì)動(dòng)態(tài)地創(chuàng)建產(chǎn)品對(duì)象的類(lèi),或者從對(duì)象池中返回一個(gè)對(duì)象,或者對(duì)所創(chuàng)建的對(duì)象進(jìn)行復(fù)雜的配置,或者應(yīng)用其他的操作。從定義上看,單例模式也是一種工廠模式的實(shí)現(xiàn),因?yàn)樗鼮槟銓?shí)例化了一個(gè)特定的對(duì)象供系統(tǒng)使用。
應(yīng)用實(shí)例數(shù)據(jù)庫(kù)驅(qū)動(dòng):各個(gè) WEB 框架的數(shù)據(jù)庫(kù)驅(qū)動(dòng)邏輯,其中就有工廠模式的影子。大多數(shù)的框架會(huì)支持多種數(shù)據(jù)庫(kù)如 oracle / mysql / sql server 等,此時(shí)在配置項(xiàng)里,只需提供一下約定好的數(shù)據(jù)庫(kù)平臺(tái)的字符串名稱(chēng)即可,無(wú)需自己實(shí)例化數(shù)據(jù)庫(kù)驅(qū)動(dòng)。 WEB 框架收到要實(shí)例化的數(shù)據(jù)庫(kù)名稱(chēng)后,調(diào)用工廠模式方法,實(shí)例化相應(yīng)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)后,供后續(xù)代碼使用。
連接郵件服務(wù)器的類(lèi):可以連接郵件服務(wù)器的方法有 POP3,IMAP,HTTP ,此時(shí)可以寫(xiě)一個(gè)工廠類(lèi)負(fù)責(zé)實(shí)例化這幾種連接方法,如果某一天對(duì)方增加了 webSerives 連接方法,那么直接在工廠類(lèi)里做相應(yīng)的修改即可。
代碼舉例class ConnectionFactory { function static getConnection($db_class_name) { $db_class_name = strtolower($db_class_name); if (include_once "Drivers/" . $db_class_name . ".php") { $classname = "Driver_" . $db_class_name; return new $db_class_name; } else { throw new Exception ("The specify class driver file didn not found. "); } } } ConnectionFactory::getConnection("mysql"); ConnectionFactory::getConnection("oracle");
如果有了新的數(shù)據(jù)庫(kù)驅(qū)動(dòng)類(lèi),只需要在 drivers 下加入相應(yīng)的驅(qū)動(dòng)文件即可,當(dāng)然要符合相應(yīng)驅(qū)動(dòng)規(guī)則。
優(yōu)點(diǎn)一個(gè)調(diào)用者想創(chuàng)建一個(gè)對(duì)象,只要知道其名稱(chēng)就可以了。封裝了實(shí)例化過(guò)程,使用者不在需要關(guān)心過(guò)多的實(shí)例化過(guò)程,只需要提供約定好的實(shí)例化標(biāo)識(shí)即可。
擴(kuò)展性高,如果想增加一個(gè)“產(chǎn)品”,只要擴(kuò)展一個(gè)工廠類(lèi)或者是修改工廠的生產(chǎn)過(guò)程即可。 3. 屏蔽產(chǎn)品的具體實(shí)現(xiàn),調(diào)用者只關(guān)心產(chǎn)品的接口,產(chǎn)品類(lèi)不論如何變化都不再影響其實(shí)例化過(guò)程。
缺點(diǎn)每次增加一個(gè)產(chǎn)品時(shí),都需要增加或者修改一個(gè)具體類(lèi)和對(duì)象實(shí)現(xiàn)工廠,在一定程度上增加了系統(tǒng)的復(fù)雜度,同時(shí)也增加了系統(tǒng)具體類(lèi)的依賴(lài)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25648.html
摘要:目前已經(jīng)成為全球最為流行的建站程序,根據(jù)的最新統(tǒng)計(jì),的市場(chǎng)份額過(guò)去一年在持續(xù)增長(zhǎng)。報(bào)告顯示,市場(chǎng)份額過(guò)去一年增長(zhǎng)了至,這意味著互聯(lián)網(wǎng)上大約五分之二的網(wǎng)站是用創(chuàng)建的。資料顯示,在年初,為所有網(wǎng)站提供了的支持。作為該年度的第三大主要核心版本。WordPress目前已經(jīng)成為全球最為流行的CMS建站程序,根據(jù) W3techs 的最新統(tǒng)計(jì),WordPress 的市場(chǎng)份額過(guò)去一年在持續(xù)增長(zhǎng)。W3tech...
摘要:以大量微博用戶(hù)數(shù)據(jù)為基礎(chǔ)可建立數(shù)據(jù)模型。當(dāng)前微博除了用戶(hù)自己,其他人是不能查看該用戶(hù)所有粉絲數(shù)據(jù)的。 項(xiàng)目地址:https://github.com/daweilang/... 開(kāi)始抓取微博數(shù)據(jù)的時(shí)候,只是想獲得一條熱門(mén)微博下的所有評(píng)論,因?yàn)槔锩嬗胁簧賵D片廣告,所以想試試能不能分析出熱門(mén)微博評(píng)論里的異常用戶(hù)。 使用PHP的Laravel框架后,通過(guò)隊(duì)列、命令等各種功能,最后構(gòu)架了一套完...
摘要:事務(wù)管理結(jié)構(gòu)事務(wù)管理有個(gè)左右,其中最核心的有個(gè),分別是。事務(wù)管理主要結(jié)構(gòu)如下三個(gè)核心接口源碼解析接口是用于定義一個(gè)事務(wù),它定義了事務(wù)管理的五大屬性,在上一篇文章中有詳細(xì)介紹。只需要裝配一個(gè)實(shí)體管理工廠接口的任意實(shí)現(xiàn)。 1.Spring事務(wù)管理API結(jié)構(gòu) ??Spring事務(wù)管理API有100個(gè)左右,其中最核心的API有3個(gè),分別是TransactionDefinition、 ??Pla...
摘要:工廠模式使一個(gè)類(lèi)的實(shí)例化延遲到其子類(lèi)。參考系列源地址系列目錄設(shè)計(jì)模式概述設(shè)計(jì)模式一簡(jiǎn)單工廠模式設(shè)計(jì)模式二工廠方法模式設(shè)計(jì)模式三抽象工廠模式設(shè)計(jì)模式四單例模式 一、什么是簡(jiǎn)單工廠模式 簡(jiǎn)單工廠 (Simple Factory)又稱(chēng)靜態(tài)工廠方法模式(Static Factory Method Pattern) 使用的頻率可以說(shuō)是非常之高,它的官方解釋為:定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子...
摘要:對(duì)于這個(gè)問(wèn)題,接下來(lái)的工廠方法模式可以解決這個(gè)問(wèn)題。二工廠方法模式的優(yōu)點(diǎn)擁有良好的封裝性,代碼結(jié)構(gòu)清晰。參考系列源地址系列目錄設(shè)計(jì)模式概述設(shè)計(jì)模式一簡(jiǎn)單工廠模式設(shè)計(jì)模式二工廠方法模式設(shè)計(jì)模式三抽象工廠模式設(shè)計(jì)模式四單例模式 簡(jiǎn)單工廠簡(jiǎn)述: 簡(jiǎn)單工廠模式實(shí)現(xiàn)了產(chǎn)品類(lèi)的代碼跟客戶(hù)端代碼分離,但會(huì)有一個(gè)問(wèn)題,優(yōu)秀的代碼是符合開(kāi)閉原則如果你要加一個(gè)C類(lèi)產(chǎn)品,你就要修改工廠類(lèi)里面的代碼,也就是說(shuō)...
閱讀 984·2021-11-24 09:39
閱讀 2185·2021-11-16 11:54
閱讀 2077·2021-11-11 17:22
閱讀 2372·2021-09-30 09:55
閱讀 3591·2021-08-12 13:22
閱讀 1626·2019-08-30 15:44
閱讀 1168·2019-08-29 12:12
閱讀 3263·2019-08-27 10:58