小編今天分享的內(nèi)容是Java設(shè)計(jì)模式之工廠模式。
收藏之前,務(wù)必點(diǎn)個(gè)贊,這對(duì)小編能否在頭條繼續(xù)給大家分享Java的知識(shí)很重要,謝謝!文末有投票,你想了解Java的哪一部分內(nèi)容,請(qǐng)反饋給我。
獲取學(xué)習(xí)資源,更多源碼,視頻,知識(shí)點(diǎn)講解!歡迎加入Java學(xué)習(xí)交流群616959444,我們一起學(xué)Java!
工廠模式簡(jiǎn)介
實(shí)例化對(duì)象,用工廠方法代替new操作。
實(shí)現(xiàn)類(lèi)、創(chuàng)建對(duì)象統(tǒng)一管理和控制。從而實(shí)現(xiàn)了創(chuàng)建者和調(diào)用者的分離。
詳細(xì)類(lèi)分類(lèi):
簡(jiǎn)單工廠模式:用來(lái)生產(chǎn)同一等級(jí)結(jié)構(gòu)中的任意產(chǎn)品。(對(duì)于增加新的產(chǎn)品,需要修改已有代碼)
工廠方法模式:用來(lái)生產(chǎn)同一等級(jí)結(jié)構(gòu)中的固定產(chǎn)品。(支持增加任意產(chǎn)品)
抽象工廠模式:用來(lái)生產(chǎn)不同產(chǎn)品族的全部產(chǎn)品。(對(duì)于增加新的產(chǎn)品,無(wú)能為力;支持增加產(chǎn)品族)
應(yīng)用場(chǎng)景:
- JDK 中Calendar 的getInstance方法。
- JDBC中Connection對(duì)象的獲取。
- Hibernate中SessionFactory創(chuàng)建Session。
- Spring 中IOC容器創(chuàng)建管理bean對(duì)象。
- XML解析時(shí)的DocumentBuilderFactory創(chuàng)建解析器對(duì)象。
- 反射中Class對(duì)象的newInstance()。
簡(jiǎn)單工廠模式
- 也叫做靜態(tài)工廠模式,就是工廠類(lèi)一般是使用靜態(tài)方法,通過(guò)接收的參數(shù)的不同來(lái)返回不同的對(duì)象實(shí)例。
- 對(duì)于增加新產(chǎn)品無(wú)能為力!不修改代碼的話,是無(wú)法擴(kuò)展的。
獲取學(xué)習(xí)資源,更多源碼,視頻,知識(shí)點(diǎn)講解!歡迎加入Java學(xué)習(xí)交流群616959444,我們一起學(xué)Java!
工廠方法模式(factorymethod)
- 為了避免簡(jiǎn)單工廠模式的缺點(diǎn),不完全滿足OCP。
- 工廠方法模式和簡(jiǎn)單工廠模式最大的不同在于,簡(jiǎn)單工廠模式只有一個(gè)(對(duì)于一個(gè)項(xiàng)目或者一個(gè)獨(dú)立模塊而言)工廠類(lèi),而工廠方法模式有一組實(shí)現(xiàn)了相同接口的工廠類(lèi)。
獲取學(xué)習(xí)資源,更多源碼,視頻,知識(shí)點(diǎn)講解!歡迎加入Java學(xué)習(xí)交流群616959444,我們一起學(xué)Java!
簡(jiǎn)單工廠和工廠方法模式比較
根據(jù)設(shè)計(jì)理論建議:工廠方法模式。但實(shí)際上,我們一般都用簡(jiǎn)單工廠模式。