抽象工厂模式的应用
抽象工廠模式廣泛用于軟件開(kāi)發(fā)過(guò)程中。《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》指出抽象工廠模式的意圖在于提供一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類。該模式適用于以下情況:
(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í)。
該模式將得到以下效果:
(1)??? 它分離了具體的類;
(2)??? 它使得易于交換產(chǎn)品系列;
(3)??? 它有利于產(chǎn)品的一致性;
但是,同時(shí)該模式難以支持新種類的產(chǎn)品,這是因?yàn)锳bstractFactory接口確定了可以被創(chuàng)建的產(chǎn)品的集合。支持新種類的產(chǎn)品就需要擴(kuò)展該工廠接口,這將涉及AbstractFactory類及其所有子類的改變。所以我們對(duì)該模式結(jié)構(gòu)進(jìn)行了一些修改,修改后結(jié)構(gòu)類圖如下:
而軟件對(duì)接口顯示類的實(shí)例化過(guò)程交給界面顯示類工廠類(UserControlFactory),“工廠”則根據(jù)“Interface-ConcreteClass Map”提供的數(shù)據(jù),自動(dòng)創(chuàng)建軟件所需的界面顯示類實(shí)例。如此,只需更改配置文件而不需要修改代碼就可以實(shí)現(xiàn)對(duì)“組件X”到“組件Y”的切換,將大大簡(jiǎn)化開(kāi)發(fā)的工作量。
對(duì)“Interface-ConcreteClass Map”的來(lái)源,可以從兩個(gè)方面獲取:配置文件、具體類特性標(biāo)記。
1)通過(guò)配置文件獲取“接口-類”鍵值對(duì)數(shù)據(jù)內(nèi)容方法如下:
(1)配置文件內(nèi)容如下:
(2)獲取配置文件數(shù)據(jù)方法
2)通過(guò)程序集類的特性標(biāo)記獲取“接口-類”鍵值對(duì)數(shù)據(jù)內(nèi)容方法如下:
3)通過(guò)接口類型創(chuàng)建對(duì)象實(shí)例函數(shù)如下
總結(jié)
- 上一篇: Reflection的getCaller
- 下一篇: 云服务器防火墙开放端口访问--电信云服务