工廠模式主要是為創(chuàng)建對象提供過渡接口椅您,以便將創(chuàng)建對象的具體過程屏蔽隔離起來崇棠,達(dá)到提高靈活性的目的论矾。
工廠模式可以分為三類:
1、簡單工廠模式(Simple Factory)
2拢蛋、工廠方法模式(Factory Method)
3蹈矮、抽象工廠模式(Abstract Factory)
工廠方法模式:一個(gè)抽象產(chǎn)品類醉鳖,可以派生出多個(gè)具體產(chǎn)品類凰锡。一個(gè)抽象工廠類,可以派生出多個(gè)具體工廠類文狱。每個(gè)具體工廠類只能創(chuàng)建一個(gè)具體產(chǎn)品類的實(shí)例粥鞋。
抽象工廠模式:多個(gè)抽象產(chǎn)品類,每個(gè)抽象產(chǎn)品類可以派生出多個(gè)具體產(chǎn)品類瞄崇。一個(gè)抽象工廠類呻粹,可以派生出多個(gè)具體工廠類壕曼。每個(gè)具體工廠類可以創(chuàng)建多個(gè)具體產(chǎn)品類的實(shí)例。
區(qū)別:工廠方法模式只有一個(gè)抽象產(chǎn)品類等浊,而抽象工廠模式有多個(gè)腮郊。工廠方法模式的具體工廠類只能創(chuàng)建一個(gè)具體產(chǎn)品類的實(shí)例,而抽象工廠模式可以創(chuàng)建多個(gè)筹燕。兩者皆可轧飞。
建立一個(gè)工廠(一個(gè)函數(shù)或一個(gè)類方法)來制造新的對象。分布說明引子:從無到有撒踪」В客戶自己創(chuàng)建寶馬車,然后拿來用制妄。
抽象產(chǎn)品角色(Product):定義產(chǎn)品的接口掸绞。
具體產(chǎn)品角色(ConcreteProduct) :實(shí)現(xiàn)接口Product的具體產(chǎn)品類。
抽象工廠角色(Creator) :聲明工廠方法(FactoryMethod)耕捞,返回一個(gè)產(chǎn)品衔掸。
真實(shí)的工廠(ConcreteCreator):實(shí)現(xiàn)FactoryMethod工廠方法,由客戶調(diào)用俺抽,返回一個(gè)產(chǎn)品的實(shí)例敞映。
抽象工廠允許客戶使用抽象的接口來創(chuàng)建一組相關(guān)產(chǎn)品,而不需要知道或關(guān)心實(shí)際生產(chǎn)出的具體產(chǎn)品是什么凌埂。
工廠模式的優(yōu)點(diǎn):工廠方法模式仿佛已經(jīng)很完美的對對象的創(chuàng)建進(jìn)行了包裝驱显,使得客戶程序中僅僅處理抽象產(chǎn)品角色提供的接口诗芜,但使得對象的數(shù)量成倍增長瞳抓。當(dāng)產(chǎn)品種類非常多時(shí),會(huì)出現(xiàn)大量的與之對應(yīng)的工廠對象伏恐,這不是我們所希望的孩哑。