上一章節介紹了簡單工廠模式,簡單工廠模式,適合子類品種不多,一般3個左右,而且有違設計模式的開放-封閉原則。而工廠模式正是對簡單工廠模式的一種提公升。工廠模式是一組簡單工廠模式,同時在客戶端決定所要生產產品的類別。以下列舉了簡單工廠模式和工廠模式的區別和聯絡。
模式簡單工廠模式
工廠模式
適合場景
乙個工廠,一組產品
多個工廠,一系列產品
產品例項化
在工廠中進行邏輯判斷,決定例項化哪種產品
在客戶端,直接指定具體的工廠類
分配記憶體
在執行時,才會去例項化物件
在編譯時,就會為物件分配空間
擴充套件性需要更改工廠類中的邏輯判斷方法,客戶端無變化
原有工廠類不受影響,只需要增加新的產品和工廠
封閉性破壞開放-封閉原則
遵循開放-封閉原則
以下用簡單工廠模式裡的計算器為例,用工廠模式來實現。將每個運算操作提公升為一種工廠,每個工廠只有一種產品。
例項中計算器用工廠模式實現:
工廠模式的uml圖:
raise exception ("除數不能為0")
return self.numbera/self.numberb
if __name__ == '__main__':
numa = ast.literal_eval(input("請輸入數字a: "))
oper_sympol = input("請輸入運算子(+,-,*,/): ")
operator =
factory = operator.get(oper_sympol)
oper = factory.createoperation()
oper.numbera = numa
oper.numberb = ast.literal_eval(input("請輸入數字b: "))
print(oper.getresult())
工廠方法的好處就是定義了乙個建立物件統一介面,讓例項化物件延遲到子類。
《大話設計模式》中雷鋒工廠的**在我的github中有,這裡就不貼出來了。
github位址為:
大話設計模式C 版 簡單工廠模式
簡單工廠模式應該是所有設計模式中最簡單,也最基礎的一種模式,以下是乙個簡單的採用工廠模式寫乙個加減法的計算器。1 抽象介面類 依賴倒轉原則 高層和底層都要依賴於抽象,針對介面程式設計 class ioperation virtual ioperation virtual void setnum in...
《大話設計模式》python實現 簡單工廠模式
基於python3.6實現 最近開始看 大話設計模式 由於平常用python,所以把 改寫了一下,也是心血來潮,不知道能不能更下去,慢慢來吧。簡單工廠模式 class operation object pass class opadd operation def getresult self ret...
大話設計模式 簡單工廠模式
學習c 1年的菜鳥,開始學習設計模式,學過了留下痕跡,歡迎一起談論學習。該模式總結 利用多型例項化不同的物件。include stdafx.h include include using namespace std class operate operate void setnumber1 int ...