A3) Factory Method (工廠(chǎng)模式)
定義:定義一個(gè)創(chuàng )建對象的接口,并讓子類(lèi)來(lái)決定由哪個(gè)類(lèi)實(shí)現這個(gè)接口。工廠(chǎng)模式將接口實(shí)例化交給子類(lèi)完成。
工廠(chǎng)模式是非常常見(jiàn)的模式,通常與動(dòng)態(tài)類(lèi)的加載相結合使用。常用的JDBC中,只返回一個(gè)Connection接口,而Connection的具體實(shí)現則由不同的數據庫供應商來(lái)提供。
對于工廠(chǎng)模式和抽象工廠(chǎng),有必要多分析一下兩者的區別,我也很久沒(méi)有搞清楚。相似點(diǎn):都把創(chuàng )建對象的工作交給了子類(lèi)來(lái)做,自己只是提供一個(gè)接口。區別:工廠(chǎng)模式所要創(chuàng )建的對象相對來(lái)說(shuō)非常簡(jiǎn)單,而且對象相互獨立,沒(méi)有聯(lián)系。通常情況,只從一個(gè)工廠(chǎng)中取得一個(gè)對象,如LogManager.getLogger();而抽象工廠(chǎng)是工廠(chǎng)模式的一種升級,它所要創(chuàng )建的對象復雜且相互關(guān)聯(lián)(如不同的茶葉對于水溫的要求不同),運用工廠(chǎng)模式很難保證對象的一致性且擴展性不好,這時(shí)就需要將這部分對象的創(chuàng )建提取出來(lái),形成抽象工廠(chǎng)。
參考:
1、
http://www.jdon.com/designpatterns/designpattern_factory.htm(中文、java實(shí)例)
2、
http://www.dofactory.com/Patterns/PatternFactory.aspx(英文、C#實(shí)例、UML)
3、
http://www.techscore.com/tech/DesignPattern/FactoryMethod.html(日文、java實(shí)例、UML)
推薦
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。