該文章屬於《程式設計中的那些經典套路——設計模式彙總》系列,並且以下內容基於語言php
前面我們寫了簡單工廠模式,《程式設計中的那些套路——關於簡單工廠模式》,但簡單工廠模式有一些不足(違反開放封閉原則),所以需要設計出一套更加規範的設計模式。
工廠模式就在這個情形下產生了。
此處以資料庫的選擇為例子:
工廠模式算是對簡單工廠模式的一次公升級,新增了乙個工廠類介面(factory)。### 簡單工廠可沒有
通過對**的解耦生成了多個資料庫工廠類,這些資料庫工廠分別對應著乙個實際的資料庫功能類,外界通過呼叫不同的工廠從而使用不同的類 。
###簡單工廠只有乙個client類,具體選擇哪乙個資料庫類是通過 switch ($type) **判斷的,如果需要新增資料庫或者減少資料庫的話,需要直接改寫好了的**,也就是在這裡違反了開閉原則。*
看看**應該會清晰很多。
工廠模式.php
<?php
//設定資料庫介面
inte***ce db
//設定工廠介面
inte***ce factory
//mysql實際功能類
class mysql implements db }
//oracle
class oracle implements db }
//nosql實際功能類
class nosql implements db }
//對外展示的mysql工廠類
class facmysql implements factory }
//對外展示的oracle工廠類
class facoracle implements factory }
//對外展示的nosql工廠類
class facnosql implements factory }
//現在我想實現mysql資料庫的功能,但是我只需要呼叫mysql的工廠類即可,我無法並且也沒必要知道,實際類和方法的名字
$db = new facmysql();
print_r($db->facworking()); //output:開始使用mysql
?>
外部呼叫的時候,只需要選擇自己所需要的資料庫工廠即可,該工廠會去呼叫真實資料庫處理方法,然後返回你想要的結果。
而當你想要更換資料庫的時候就很簡單了,只需要把 $db = new facmysql();換成其他的資料庫工廠就行了,想要oracle資料庫的話就換成facoracle()。
當然如果你看不懂工廠模式的話,那麼你可以再看看簡單工廠模式,有助於你的理解
程式設計中的那些套路——關於簡單工廠模式
該文章屬於《程式設計中的那些經典套路——設計模式彙總》系列
程式設計中的那些套路 關於策略模式
該文章屬於 程式設計中的那些經典套路 設計模式彙總 系列,並且以下內容基於語言php 今天講講策略模式,策略模式 和工廠模式十分相像 或者說在 邏輯層面,他們是一樣的 但策略模式與工廠模式有一點很重要的區別 工廠模式 我們著眼於得到物件,並操作物件,策略模式 我們著重得到物件某方法的執行結果 看 策...
程式設計中的那些套路 關於橋接模式
該文章屬於 程式設計中的那些經典套路 設計模式彙總 系列,並且以下內容基於語言php 今天來談談橋接模式,橋接模式的功能在於將兩個原本不相關的類結合在一起,然後利用兩個類中的方法和屬性,輸出乙份新的結果。如圖 來看下具體 吧 橋接模式.php class info 普通資訊 class common...
那些年走過的Python套路 更新中
開開心心學python,單純而美好,但是你的套路總讓我無可奈何.1 調皮的set 不要因為縮減 行數,就偷懶,python會讓你知道 懶 的價錢很高,你買不起!2 json的套路 json檔案寫入另乙個檔案時,加上紅色框內的 否則在載入時候可能出現令你驚喜的錯誤。且行且珍惜!3 pycharm 包匯...