沿用 設計模式(二)工廠模式:1-簡單工廠模式 中關於運算器 operation 的例子。
針對在 easy factory 中提出的,破壞「開-閉原則」的問題,factory method 提出了另一種解決方案:
將生產運算器的工廠抽象出來(absoperationfactory),然後為原來每乙個需要建立的物件(extends absoperation),都建立乙個專門的工廠。
這樣一來,可以巧妙地利用多型的性質,完成對**的解耦。
抽象工廠(abstract factory)
具體工廠(concrete factory)
抽象產品(abstract product)
具體產品(concrete product)
這是乙個簡化版的 operation uml 類圖。
具體工廠 operationaddfactory 通過 override 父類的 createoperation() 方法,將返回型別由抽象產品 absoperation 縮小為具體產品 operationadd。
publicabstract
class
absoperation
publicabstract
class
absoperationfactory
publicfinal
class operationadd extends
absoperation
@override
public bigdecimal calc(double a, double
b) }
public遵循了「開閉原則」。final
class operationaddfactory extends
absoperationfactory
}
由呼叫方決定具體需要哪乙個 operation。
針對每一種產品,都需要多建立乙個工廠物件。
更多的記憶體開銷。
但是使用 new 關鍵字來建立物件,相比使用反射建立物件,更快,也更加安全(反射對於建立複雜物件不具備普適性),也容易在編譯期間發現錯誤。
設計模式(2) 工廠方法模式
工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使用乙個類的例項化延遲到子類。舉個栗子 我們要生產水果罐頭,我們應該怎麼做呢?首先,我們需要準備好原料。其次我們需要乙個罐頭工廠,往工廠裡運送不同的原料,出來的就是不同的罐頭。原料就是蘋果啊 橘子啊等等的這些類。int...
設計模式2 工廠方法模式
工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 工廠方法模式的意義是定義乙個建立 產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工...
設計模式2 工廠方法模式
工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到其子類。類圖 抽象產品類product負責定義產品的共性,實現對事物最抽象的定義。creator為抽象建立類,也就是抽象工廠,具體如何建立產品類是由具體的實現工廠concretecreator完成的...