工廠模式之——工廠方法模式
定義:
定義一個用於創建對象的介面,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。
相比於簡單工廠消去了內部判斷邏輯,遵守了開放封閉原則。但是程式碼量和邏輯複雜度更高了。
結構圖:
程式碼:水果工廠
(父類)水果類:
Class Fruit
{
。。。
}
(子類)蘋果類:
Class Apple : Fruit
{
。。。
}
水果工廠抽象類:
Class FruitFactory
{
//生產水果抽象方法
}
蘋果工廠子類:
Class AppleFactory : FruitFactory
{
//生產蘋果方法
}
客戶端:
FruitFactory CFruitFactory = new AppleFactory();//如果要生產草莓,加一個草莓工廠,一個草莓水果子類,這裡換成new StrawberryFactory()就行了。
Fruit* CFruit = CFruitFactory.CreateFruitFactory();//蘋果對象生產完成
使用時機:
可以和簡單工廠互相替換,需要根據具體項目而定。二者各有優缺點,就原則來說,工廠方法模式更好。
優點:克服了簡單工廠違背開放封閉原則的缺點,又保持了封裝對象創建過程的優點。
缺點:產品和工廠類成對增加,增加額外開發量、工程複雜度、編譯速度。