?24個c#設計模式目錄 ?原始碼位址
乙個水果農場,使用者需要某一種水果時,農場能夠根據使用者所提供的水果名稱返回該水果。在此,水果農場被稱為工廠(factory),而生產出的水果被稱為產品,水果的名稱被稱為引數,工廠可以根據引數的不同返回不同的產品,這就是簡單工廠的動機。
簡單工廠模式:定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。使用頻率:★★★☆☆
簡單工廠模式包含以下3個角色:
factory(工廠角色)
product (抽象產品角色)
concreteproduct (具體產品角色)
這裡仍然使用開頭的例子,水果農場(fruitfactory)作為工廠角色,水果(fruit)為抽象產品角色,蘋果和橘子作為具體產品角色,由此可以得出模式結構:
工廠角色是這個簡單工廠模式的核心,他需要提供靜態的工廠方法,來根據引數返回例項化物件。抽象產品角色封裝了各個產品的公共方法,其具體產品角色間不同的方法由各自子類實現。
abstract class
fruit
// 宣告抽象業務方法
public abstract void
methoddiff()
;}
class
: fruit
}
class
orange
: fruit
}
fruitfactory
提供靜態方法根據引數返回不同例項。
class
fruitfactory
else
if(arg ==
"orange"
)return fruit;
}}
客戶端呼叫方法如下:
static
void
main
(string[
] args)
在實現上,也可以將fruit
和fruitfactory
合併,將getfruit
方法移動到fruit
中以簡化此模式。
優點:簡單工廠模式實現了物件建立和使用的分離。
客戶端無需知道所建立的具體產品類的類名,只需要知道具體產品類所對應的引數即可。
通過引入配置檔案,可以在不修改任何客戶端**的情況下,更換和增加新的具體產品類,在一定程度上提高了系統的靈活性。
缺點:由於工廠類集中了所有產品的建立邏輯,職責過重,一旦不能正常工作,整個系統都要受到影響。
使用簡單工廠模式勢必會增加系統中類的個數(引入了新的工廠類),增加了系統的複雜度和理解難度。
系統擴充套件困難,一旦新增新產品不得不修改工廠邏輯,在產品型別較多時,有可能造成工廠邏輯過於複雜,不利於系統的擴充套件和維護。
簡單工廠模式由於使用了靜態工廠方法,造成工廠角色無法新城基於繼承的等級結構。在c#語言中,不能通過類的例項化物件來訪問靜態方法和靜態變數,無法在客戶端**中針對父類程式設計,而在執行時使用工廠子類物件來覆蓋父類,因此,工廠類不能得到很好的擴充套件。
設計模式 1 簡單工廠模式
簡單工廠模式屬於建立型的設計模式,其特點是使用乙個工廠生產所有的類物件,通過在工廠類中進行判斷,然後建立需要的功能類。優點 不必使用具體的功能類去建立該類的例項。缺點 新增乙個功能類就需要在工廠類中增加乙個判斷。此處利用 這4個operation來生成不同的operation物件來說明簡單工廠模式。...
設計模式 1 簡單工廠模式
總結簡單工廠設計模式就是為了能夠根據不同情況動態獲取到需要的型別 在本次將會演示乙個計算器的功能 我們無法知道使用者在程式中會輸入哪些字元,是 或者其他,但是我們能確定的是使用者需要通過輸入將兩個值進行運算,得到乙個返回結果。那麼在此處我們就可以建立乙個演算法基類,有設定值並計算後返回值的方法,值1...
設計模式(1) 簡單工廠模式
例項化物件的時候不再使用 new object 形式,可以根據使用者的選擇條件來例項化相關的類。對於客戶端來說,去除了具體的類的依賴。只需要給出具體例項的描述給工廠,工廠就會自動返回具體的例項物件。todo classname operation description 運算類 public cla...