?24個c#設計模式目錄 ?原始碼位址
因此我們不再使用乙個fruitfactory
來統一負責所有水果例項的建立,而是交給專門的工廠子類去完成,相當於我們把水果農場拆分成了?廠和?廠等等。
工廠方法模式:定義乙個用於建立物件的介面,但是讓子類決定將哪乙個類例項化,工廠方法模式讓乙個類的例項化延遲到其子類。使用頻率:★★★★★
相對於簡單工廠模式,工廠方法模式將factory(工廠角色)拆分成了
另外還包括
一共4種角色。
實現上,concreteproduct 和 product 角色與簡單工廠模式一樣,區別在於 factory 和 concretefactory 角色。
inte***ce fruitfatory
class
: fruitfatory
}
客戶端呼叫方式也發生變化,需要先指定具體工廠角色。
static
void
main
(string[
] args)
在這樣的結構中,我們增加?類時就不需要修改fruitfactory
中的**,而是增加乙個專門生產?的工廠類,遵循了開閉原則。
優點:提供了專門的工廠方法來建立客戶所需要的產品,同時還向客戶隱藏了那種具體產品類將被例項化這一細節。客戶只需要關心所需產品對應的工廠即可。
基於工廠角色和產品角色的多型性設計是此模式的關鍵。能夠讓工廠自主決定建立何種產品物件,而如何建立這個物件的細節完全封裝在具體工廠內部。
再系統中加入新產品時,完全符合開閉原則。
缺點:新增新產品時,類的個數將成對增加,增加系統複雜度。
引入抽象層增加理解難度。
設計模式(2) 工廠方法模式
工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使用乙個類的例項化延遲到子類。舉個栗子 我們要生產水果罐頭,我們應該怎麼做呢?首先,我們需要準備好原料。其次我們需要乙個罐頭工廠,往工廠裡運送不同的原料,出來的就是不同的罐頭。原料就是蘋果啊 橘子啊等等的這些類。int...
設計模式2 工廠方法模式
工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 工廠方法模式的意義是定義乙個建立 產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工...
設計模式2 工廠方法模式
工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到其子類。類圖 抽象產品類product負責定義產品的共性,實現對事物最抽象的定義。creator為抽象建立類,也就是抽象工廠,具體如何建立產品類是由具體的實現工廠concretecreator完成的...