/**
* 根據品牌英文名稱獲取各品牌例項物件
* @param englishname
* @return
*/public
static brand getinstance
(string englishname)
else
if(nike.
equals
(englishname)
)else
if(dong_feng.
equals
(englishname)
)else
if(hong_qi.
equals
(englishname)
)else
}
這是簡單工廠模式的工廠類中根據品牌英文名稱獲取各品牌例項物件的方法,由於這個例子非常的簡單,在現實業務中遠遠不僅於此,所以就會去修改**以便於實現需求,這樣就違背了開閉原則。
所以有了工廠方法模式,使得工廠類可以被子類繼承,這樣在簡單工廠模式裡集中在工廠方法上的壓力可以由工廠方法模式裡不同的工廠子類來分擔。
public
abstract
class
brandfactory
public
class
chinabrandfactory
extends
brandfactory;}
}public
class
foreignbrandfactory
extends
brandfactory;}
}
測試
public
class
factorytest
}public
static
void
main
(string[
] args)
}中國品牌有:
東風紅旗
外國品牌有:
阿迪達斯
耐克
優缺點
工廠方法中,我們把生成所需的例項延遲,就是通過對應的工廠子類來生成對應的例項,這樣就做到了無論需要增加多少例項,都可以通過增加子工廠實現類來實現,這種設計方式符合 「開閉」原則。缺點就是當例項過多的時候,需要定義很多例項對應的子工廠類。
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
工廠方法模式 工廠方法模式 二
工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...
工廠方法模式(一) 簡單工廠方法模式
ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...