成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP 設(shè)計模式之二——工廠模式

cc17 / 2239人閱讀

摘要:連接郵件服務(wù)器的類可以連接郵件服務(wù)器的方法有,此時可以寫一個工廠類負責(zé)實例化這幾種連接方法,如果某一天對方增加了連接方法,那么直接在工廠類里做相應(yīng)的修改即可。擴展性高,如果想增加一個產(chǎn)品,只要擴展一個工廠類或者是修改工廠的生產(chǎn)過程即可。

定義

工廠模式的使用頻率比較高。它的定義為:定義一個類,該類主要負責(zé)系統(tǒng)的去實例化一些其它的類。通俗點說就是,你告訴我你需要哪個類的實例即可,其它的你不用管,我?guī)湍闳嵗?,你只管用即可?/p>

工廠對象可能會動態(tài)地創(chuàng)建產(chǎn)品對象的類,或者從對象池中返回一個對象,或者對所創(chuàng)建的對象進行復(fù)雜的配置,或者應(yīng)用其他的操作。從定義上看,單例模式也是一種工廠模式的實現(xiàn),因為它為你實例化了一個特定的對象供系統(tǒng)使用。

應(yīng)用實例

數(shù)據(jù)庫驅(qū)動:各個 WEB 框架的數(shù)據(jù)庫驅(qū)動邏輯,其中就有工廠模式的影子。大多數(shù)的框架會支持多種數(shù)據(jù)庫如 oracle / mysql / sql server 等,此時在配置項里,只需提供一下約定好的數(shù)據(jù)庫平臺的字符串名稱即可,無需自己實例化數(shù)據(jù)庫驅(qū)動。 WEB 框架收到要實例化的數(shù)據(jù)庫名稱后,調(diào)用工廠模式方法,實例化相應(yīng)的數(shù)據(jù)庫驅(qū)動后,供后續(xù)代碼使用。

連接郵件服務(wù)器的類:可以連接郵件服務(wù)器的方法有 POP3,IMAP,HTTP ,此時可以寫一個工廠類負責(zé)實例化這幾種連接方法,如果某一天對方增加了 webSerives 連接方法,那么直接在工廠類里做相應(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ù)庫驅(qū)動類,只需要在 drivers 下加入相應(yīng)的驅(qū)動文件即可,當然要符合相應(yīng)驅(qū)動規(guī)則。

優(yōu)點

一個調(diào)用者想創(chuàng)建一個對象,只要知道其名稱就可以了。封裝了實例化過程,使用者不在需要關(guān)心過多的實例化過程,只需要提供約定好的實例化標識即可。

擴展性高,如果想增加一個“產(chǎn)品”,只要擴展一個工廠類或者是修改工廠的生產(chǎn)過程即可。 3. 屏蔽產(chǎn)品的具體實現(xiàn),調(diào)用者只關(guān)心產(chǎn)品的接口,產(chǎn)品類不論如何變化都不再影響其實例化過程。

缺點

每次增加一個產(chǎn)品時,都需要增加或者修改一個具體類和對象實現(xiàn)工廠,在一定程度上增加了系統(tǒng)的復(fù)雜度,同時也增加了系統(tǒng)具體類的依賴。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25648.html

相關(guān)文章

  • 全球互聯(lián)網(wǎng)大約五分之二的網(wǎng)站竟然是用WordPress來創(chuàng)建的!

    摘要:目前已經(jīng)成為全球最為流行的建站程序,根據(jù)的最新統(tǒng)計,的市場份額過去一年在持續(xù)增長。報告顯示,市場份額過去一年增長了至,這意味著互聯(lián)網(wǎng)上大約五分之二的網(wǎng)站是用創(chuàng)建的。資料顯示,在年初,為所有網(wǎng)站提供了的支持。作為該年度的第三大主要核心版本。WordPress目前已經(jīng)成為全球最為流行的CMS建站程序,根據(jù) W3techs 的最新統(tǒng)計,WordPress 的市場份額過去一年在持續(xù)增長。W3tech...

    Tecode 評論0 收藏0
  • PHP 基于laravel框架獲取微博數(shù)據(jù)之二 用戶數(shù)據(jù)的使用

    摘要:以大量微博用戶數(shù)據(jù)為基礎(chǔ)可建立數(shù)據(jù)模型。當前微博除了用戶自己,其他人是不能查看該用戶所有粉絲數(shù)據(jù)的。 項目地址:https://github.com/daweilang/... 開始抓取微博數(shù)據(jù)的時候,只是想獲得一條熱門微博下的所有評論,因為里面有不少圖片廣告,所以想試試能不能分析出熱門微博評論里的異常用戶。 使用PHP的Laravel框架后,通過隊列、命令等各種功能,最后構(gòu)架了一套完...

    Sleepy 評論0 收藏0
  • Spring聲明式事務(wù)管理之二:核心接口API

    摘要:事務(wù)管理結(jié)構(gòu)事務(wù)管理有個左右,其中最核心的有個,分別是。事務(wù)管理主要結(jié)構(gòu)如下三個核心接口源碼解析接口是用于定義一個事務(wù),它定義了事務(wù)管理的五大屬性,在上一篇文章中有詳細介紹。只需要裝配一個實體管理工廠接口的任意實現(xiàn)。 1.Spring事務(wù)管理API結(jié)構(gòu) ??Spring事務(wù)管理API有100個左右,其中最核心的API有3個,分別是TransactionDefinition、 ??Pla...

    lykops 評論0 收藏0
  • PHP設(shè)計模式(一)簡單工廠模式 (Simple Factory For PHP

    摘要:工廠模式使一個類的實例化延遲到其子類。參考系列源地址系列目錄設(shè)計模式概述設(shè)計模式一簡單工廠模式設(shè)計模式二工廠方法模式設(shè)計模式三抽象工廠模式設(shè)計模式四單例模式 一、什么是簡單工廠模式 簡單工廠 (Simple Factory)又稱靜態(tài)工廠方法模式(Static Factory Method Pattern)   使用的頻率可以說是非常之高,它的官方解釋為:定義一個用于創(chuàng)建對象的接口,讓子...

    Hancock_Xu 評論0 收藏0
  • PHP設(shè)計模式(二)工廠方法模式(Factory Method)

    摘要:對于這個問題,接下來的工廠方法模式可以解決這個問題。二工廠方法模式的優(yōu)點擁有良好的封裝性,代碼結(jié)構(gòu)清晰。參考系列源地址系列目錄設(shè)計模式概述設(shè)計模式一簡單工廠模式設(shè)計模式二工廠方法模式設(shè)計模式三抽象工廠模式設(shè)計模式四單例模式 簡單工廠簡述: 簡單工廠模式實現(xiàn)了產(chǎn)品類的代碼跟客戶端代碼分離,但會有一個問題,優(yōu)秀的代碼是符合開閉原則如果你要加一個C類產(chǎn)品,你就要修改工廠類里面的代碼,也就是說...

    zhjx922 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<