摘要:該文章屬于編程中的那些經典套路設計模式匯總系列,并且以下內容基于語言前面我們寫了簡單工廠模式,編程中的那些套路關于簡單工廠模式,但簡單工廠模式有一些不足違反開放封閉原則,所以需要設計出一套更加規范的設計模式。
該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP
前面我們寫了簡單工廠模式,《編程中的那些套路——關于簡單工廠模式》,但簡單工廠模式有一些不足(違反開放封閉原則),所以需要設計出一套更加規范的設計模式。
工廠模式就在這個情形下產生了。
此處以數據庫的選擇為例子:
工廠模式算是對簡單工廠模式的一次升級,新增了一個工廠類接口(factory)。### 簡單工廠可沒有
通過對代碼的解耦生成了多個數據庫工廠類,這些數據庫工廠分別對應著一個實際的數據庫功能類,外界通過調用不同的工廠從而使用不同的類 。
###簡單工廠只有一個client類,具體選擇哪一個數據庫類是通過 switch ($type) {case’condition’: } 代碼判斷的,如果需要新增數據庫或者減少數據庫的話,需要直接改寫好了的代碼,也就是在這里違反了開閉原則。*
看看代碼應該會清晰很多。
工廠模式.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(); } } //現在我想實現MySQL數據庫的功能,但是我只需要調用MySQL的工廠類即可,我無法并且也沒必要知道,實際類和方法的名字 $db = new facMysql(); print_r($db->facWorking()); //output:開始使用MySQL ?>
外部調用的時候,只需要選擇自己所需要的數據庫工廠即可,該工廠會去調用真實數據庫處理方法,然后返回你想要的結果。
而當你想要更換數據庫的時候就很簡單了,只需要把 $db = new FacMysql();換成其他的數據庫工廠就行了,想要Oracle數據庫的話就換成FacOracle()。
當然如果你看不懂工廠模式的話,那么你可以再看看簡單工廠模式,有助于你的理解
編程中的那些套路——關于簡單工廠模式
該文章屬于《編程中的那些經典套路——設計模式匯總》系列
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21672.html
摘要:簡單工廠模式就是遵循了這一原則,它讓不同職責的類各司其職。重點來了,簡單工廠模式的不足但是簡單工廠模式有一個不足,雖然它遵循了單一職責原則,但它違反了另一條同樣很重要的原則開放封閉原則。 該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 面向對象五大原則中有一點非常重要的原則:單一職責原則。 簡單工廠模式就是遵循了這一原則,它讓不同職責的類各司其職。 ...
該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 今天講講策略模式,策略模式 和工廠模式十分相像(或者說在代碼邏輯層面,他們是一樣的)。 但策略模式與工廠模式有一點很重要的區別: 工廠模式:我們著眼于得到對象,并操作對象, 策略模式:我們著重得到對象某方法的運行結果 看代碼 根據不同的情況使用不同的策略,即策略模式,與工廠模式確實很像,但他確確實實不是...
該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 在設計模式中,單例模式和工廠模式)可以說是使用的最普遍的設計模式了,所以掌握此種模式尤為重要。 單例模式一般使用在資源共享和需要控制資源的情況下。 例如:購物車,回收站,數據庫連接池,計數器,配置文件共享等所有項目中只需要存在一個的模塊,你都可以采用單例模式。 單例模式的好處就在于當前進程只產生一個對象(或者叫...
摘要:我們應該寫一段拓展性強與維護性較強的代碼,由此衍生出觀察者模式。 該文章屬于《編程中的那些經典套路——設計模式匯總》系列,并且以下內容基于語言PHP 今天我們來談談觀察者模式,這是一個經常用到的設計模式。 讓我們想象一個場景:一個網站有不同等級區域的用戶,不同等級的的用戶登錄后可以獲得對應的服務(一級用戶登錄后獲得一級服務,二級用戶登錄后獲得二級服務,…以此類推)。那么我們如何寫這段業...
摘要:如果看不懂的話,可以在評論區中提問,我會第一時間回答你無論何時我一直都在嗯哼該文章屬于編程中的那些經典套路設計模式匯總系列 在正式閱讀前,我先談談我們該用什么姿勢和心態學習設計模式: 如果你還沒有過多的編程經驗(泛指半年以下),我建議你把它當做小說來看,能看懂多少是多少,因為半年以下經驗的程序員用到設計模式的情況只會出現在面試上,至于實際工作中?相對來說這部分不會由你負責。 如果你已...
閱讀 1271·2021-11-17 09:33
閱讀 1737·2021-09-09 11:53
閱讀 3196·2021-09-04 16:45
閱讀 1373·2021-08-17 10:12
閱讀 2377·2019-08-30 15:55
閱讀 1775·2019-08-30 15:53
閱讀 2402·2019-08-30 15:52
閱讀 2555·2019-08-29 18:41