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

資訊專欄INFORMATION COLUMN

編程中的那些套路——關(guān)于工廠模式

light / 2430人閱讀

摘要:該文章屬于編程中的那些經(jīng)典套路設(shè)計(jì)模式匯總系列,并且以下內(nèi)容基于語言前面我們寫了簡單工廠模式,編程中的那些套路關(guān)于簡單工廠模式,但簡單工廠模式有一些不足違反開放封閉原則,所以需要設(shè)計(jì)出一套更加規(guī)范的設(shè)計(jì)模式。

該文章屬于《編程中的那些經(jīng)典套路——設(shè)計(jì)模式匯總》系列,并且以下內(nèi)容基于語言PHP

前面我們寫了簡單工廠模式,《編程中的那些套路——關(guān)于簡單工廠模式》,但簡單工廠模式有一些不足(違反開放封閉原則),所以需要設(shè)計(jì)出一套更加規(guī)范的設(shè)計(jì)模式。

工廠模式就在這個(gè)情形下產(chǎn)生了。

此處以數(shù)據(jù)庫的選擇為例子:

工廠模式算是對簡單工廠模式的一次升級(jí),新增了一個(gè)工廠類接口(factory)。### 簡單工廠可沒有

通過對代碼的解耦生成了多個(gè)數(shù)據(jù)庫工廠類,這些數(shù)據(jù)庫工廠分別對應(yīng)著一個(gè)實(shí)際的數(shù)據(jù)庫功能類,外界通過調(diào)用不同的工廠從而使用不同的類 。
###簡單工廠只有一個(gè)client類,具體選擇哪一個(gè)數(shù)據(jù)庫類是通過 switch ($type) {case’condition’: } 代碼判斷的,如果需要新增數(shù)據(jù)庫或者減少數(shù)據(jù)庫的話,需要直接改寫好了的代碼,也就是在這里違反了開閉原則。*

看看代碼應(yīng)該會(huì)清晰很多。

工廠模式.php

realWork();
 
    }
 
}
 
//對外展示的Oracle工廠類
 
class FacOracle implements factory{
 
    protected static $database;
 
    public function facWorking(){
 
        self::$database = new Oracle();
 
        return self::$database->realWork();
 
    }
 
}
 
//對外展示的NoSQL工廠類
 
class FacNosql implements factory{
 
    protected static $database;
 
    public function facWorking(){
 
        self::$database = new Nosql();
 
        return self::$database->realWork();
 
    }
 
}
 
//現(xiàn)在我想實(shí)現(xiàn)MySQL數(shù)據(jù)庫的功能,但是我只需要調(diào)用MySQL的工廠類即可,我無法并且也沒必要知道,實(shí)際類和方法的名字
 
$db = new facMysql();
 
print_r($db->facWorking()); //output:開始使用MySQL
 
?>

外部調(diào)用的時(shí)候,只需要選擇自己所需要的數(shù)據(jù)庫工廠即可,該工廠會(huì)去調(diào)用真實(shí)數(shù)據(jù)庫處理方法,然后返回你想要的結(jié)果。

而當(dāng)你想要更換數(shù)據(jù)庫的時(shí)候就很簡單了,只需要把 $db = new FacMysql();換成其他的數(shù)據(jù)庫工廠就行了,想要Oracle數(shù)據(jù)庫的話就換成FacOracle()。

當(dāng)然如果你看不懂工廠模式的話,那么你可以再看看簡單工廠模式,有助于你的理解

編程中的那些套路——關(guān)于簡單工廠模式

該文章屬于《編程中的那些經(jīng)典套路——設(shè)計(jì)模式匯總》系列

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

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

相關(guān)文章

  • 編程中的那些套路——關(guān)于簡單工廠模式

    摘要:簡單工廠模式就是遵循了這一原則,它讓不同職責(zé)的類各司其職。重點(diǎn)來了,簡單工廠模式的不足但是簡單工廠模式有一個(gè)不足,雖然它遵循了單一職責(zé)原則,但它違反了另一條同樣很重要的原則開放封閉原則。 該文章屬于《編程中的那些經(jīng)典套路——設(shè)計(jì)模式匯總》系列,并且以下內(nèi)容基于語言PHP 面向?qū)ο笪宕笤瓌t中有一點(diǎn)非常重要的原則:單一職責(zé)原則。 簡單工廠模式就是遵循了這一原則,它讓不同職責(zé)的類各司其職。 ...

    Rocture 評(píng)論0 收藏0
  • 編程中的那些套路——關(guān)于策略模式

    該文章屬于《編程中的那些經(jīng)典套路——設(shè)計(jì)模式匯總》系列,并且以下內(nèi)容基于語言PHP 今天講講策略模式,策略模式 和工廠模式十分相像(或者說在代碼邏輯層面,他們是一樣的)。 但策略模式與工廠模式有一點(diǎn)很重要的區(qū)別: 工廠模式:我們著眼于得到對象,并操作對象, 策略模式:我們著重得到對象某方法的運(yùn)行結(jié)果 看代碼 根據(jù)不同的情況使用不同的策略,即策略模式,與工廠模式確實(shí)很像,但他確確實(shí)實(shí)不是...

    tabalt 評(píng)論0 收藏0
  • 編程中的那些套路——關(guān)于單例模式

    該文章屬于《編程中的那些經(jīng)典套路——設(shè)計(jì)模式匯總》系列,并且以下內(nèi)容基于語言PHP 在設(shè)計(jì)模式中,單例模式和工廠模式)可以說是使用的最普遍的設(shè)計(jì)模式了,所以掌握此種模式尤為重要。 單例模式一般使用在資源共享和需要控制資源的情況下。 例如:購物車,回收站,數(shù)據(jù)庫連接池,計(jì)數(shù)器,配置文件共享等所有項(xiàng)目中只需要存在一個(gè)的模塊,你都可以采用單例模式。 單例模式的好處就在于當(dāng)前進(jìn)程只產(chǎn)生一個(gè)對象(或者叫...

    sshe 評(píng)論0 收藏0
  • 編程中的那些套路——關(guān)于觀察者模式

    摘要:我們應(yīng)該寫一段拓展性強(qiáng)與維護(hù)性較強(qiáng)的代碼,由此衍生出觀察者模式。 該文章屬于《編程中的那些經(jīng)典套路——設(shè)計(jì)模式匯總》系列,并且以下內(nèi)容基于語言PHP 今天我們來談?wù)動(dòng)^察者模式,這是一個(gè)經(jīng)常用到的設(shè)計(jì)模式。 讓我們想象一個(gè)場景:一個(gè)網(wǎng)站有不同等級(jí)區(qū)域的用戶,不同等級(jí)的的用戶登錄后可以獲得對應(yīng)的服務(wù)(一級(jí)用戶登錄后獲得一級(jí)服務(wù),二級(jí)用戶登錄后獲得二級(jí)服務(wù),…以此類推)。那么我們?nèi)绾螌戇@段業(yè)...

    Fourierr 評(píng)論0 收藏0
  • 編程中的那些經(jīng)典套路——設(shè)計(jì)模式匯總

    摘要:如果看不懂的話,可以在評(píng)論區(qū)中提問,我會(huì)第一時(shí)間回答你無論何時(shí)我一直都在嗯哼該文章屬于編程中的那些經(jīng)典套路設(shè)計(jì)模式匯總系列 在正式閱讀前,我先談?wù)勎覀冊撚檬裁醋藙莺托膽B(tài)學(xué)習(xí)設(shè)計(jì)模式: 如果你還沒有過多的編程經(jīng)驗(yàn)(泛指半年以下),我建議你把它當(dāng)做小說來看,能看懂多少是多少,因?yàn)榘肽暌韵陆?jīng)驗(yàn)的程序員用到設(shè)計(jì)模式的情況只會(huì)出現(xiàn)在面試上,至于實(shí)際工作中?相對來說這部分不會(huì)由你負(fù)責(zé)。 如果你已...

    youkede 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<