Abstract Factory(抽象工厂)--对象创建模式
Abstract Factory (抽象工廠)–對(duì)象創(chuàng)建模式
一、意圖
提供一個(gè)創(chuàng)建一系列相關(guān)或者相互依賴的接口,而無(wú)需指定它們具體的類。
二、動(dòng)機(jī)
1.在軟件系統(tǒng)中,經(jīng)常面臨著“一系列相互依賴的對(duì)象”的創(chuàng)建工 作;同時(shí),由于需求的變化,往往存在更多系列對(duì)象的創(chuàng)建工作。
2.如何應(yīng)對(duì)這種變化?如何繞過(guò)常規(guī)的對(duì)象創(chuàng)建方法(new),提供一 種“封裝機(jī)制”來(lái)避免客戶程序和這種“多系列具體對(duì)象創(chuàng)建工作” 的緊耦合?
三、適用性
1.一個(gè)系統(tǒng)要獨(dú)立于它的產(chǎn)品的創(chuàng)建、組合和表示時(shí)。
2.一個(gè)系統(tǒng)要由多個(gè)產(chǎn)品系列中的一個(gè)來(lái)配置時(shí)。
3.當(dāng)你要強(qiáng)調(diào)一系列相關(guān)產(chǎn)品對(duì)象的設(shè)計(jì)以便進(jìn)行聯(lián)合使用時(shí)。
4.當(dāng)你提供一個(gè)產(chǎn)品類庫(kù)、而只想顯示它們的接口而不是實(shí)現(xiàn)時(shí)。
四、結(jié)構(gòu)
五、效果
1.它分離了具體的類。
2.它使得易于交換產(chǎn)品系列。
3.它有利于產(chǎn)品的一致性。
4.難以支持新種類的產(chǎn)品。
六、實(shí)現(xiàn)
1.將工廠作為單件。
2.創(chuàng)建產(chǎn)品。
3.定義可擴(kuò)展的工廠。
七、要點(diǎn)總結(jié)
1.如果沒(méi)有應(yīng)對(duì)“多系列對(duì)象構(gòu)建”的需求變化,則沒(méi)有必要使用 Abstract Factory模式,這時(shí)候使用簡(jiǎn)單的工廠完全可以。
2.“系列對(duì)象”指的是在某一特定系列下的對(duì)象之間有相互依賴、 或作用的關(guān)系。不同系列的對(duì)象之間不能相互依賴。
3.Abstract Factory模式主要在于應(yīng)對(duì)“新系列”的需求變動(dòng)。其缺點(diǎn)在于難以應(yīng)對(duì)“新對(duì)象”的需求變動(dòng)。
4.所有餐品都將返回類型所給的相同的抽象接口返回給客戶。客戶將不能區(qū)分或?qū)σ粋€(gè)產(chǎn)品的類型進(jìn)行安全的假定。如果一個(gè)客戶需要進(jìn)行與特定的子類相關(guān)的操作,而這些操作卻不能通過(guò)抽象的接口得到。雖然可以實(shí)現(xiàn)一個(gè)向下類型轉(zhuǎn)型,但這并總是可行或安全的。
八、舉例說(shuō)明
家具工廠,要建椅子、凳子、桌子等,有些客戶可能要木質(zhì)的,有些客戶可能要竹制的,還有些藥塑料制的等,比較適合抽象工廠模式,根據(jù)具體不同(材質(zhì))系列工廠提供相應(yīng)的產(chǎn)品。
本文為李建忠設(shè)計(jì)模式視頻的筆記以及《設(shè)計(jì)模式-可復(fù)用面向?qū)ο蟮能浖幕A(chǔ)》和自己的部分見解
總結(jié)
以上是生活随笔為你收集整理的Abstract Factory(抽象工厂)--对象创建模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。