成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

PHP 設計模式之二——工廠模式

cc17 / 2288人閱讀

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

定義

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

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

應用實例

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

連接郵件服務器的類:可以連接郵件服務器的方法有 POP3,IMAP,HTTP ,此時可以寫一個工廠類負責實例化這幾種連接方法,如果某一天對方增加了 webSerives 連接方法,那么直接在工廠類里做相應的修改即可。

代碼舉例
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");

如果有了新的數據庫驅動類,只需要在 drivers 下加入相應的驅動文件即可,當然要符合相應驅動規(guī)則。

優(yōu)點

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

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

缺點

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

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

轉載請注明本文地址:http://m.hztianpu.com/yun/25648.html

相關文章

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

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

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

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

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

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

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

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

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

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

    zhjx922 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<