黑馬程序員Java設(shè)計模式詳解, 23種Java設(shè)計模式(圖解+框架源碼分析+實

準(zhǔn)備換工作面試,來復(fù)習(xí)下。先看了單例和工廠。只是舉些例子,方便記憶和理解。
1:單例,最常見就是spring中的bean都是單例的。比如你連接池datasource不采用單例模式,你每次使用連接池的地方都new個新對象,浪費資源。但是單例有時候會導(dǎo)致并發(fā)不安全,特別是一些喜歡在服務(wù)類里放成員變量的同志。
2.工廠模式的話,視頻里很多都是啥if else,實際上有很多解決辦法。比如spring自動注入個map,或者自己通過反射實現(xiàn)再或者寫個枚舉,通過enum.values(),放在map里面。
簡單工廠,很多用的都是靜態(tài)工廠方法,除非工廠依賴于其他對象,那就沒辦法靜態(tài)了。說白了就是一個要有抽象的意識,不要只會CV。否則到時候改起需求來痛苦死你。
工廠方法的話,我自己代碼里沒有映像是否用過,我覺得在封裝第三方包或者使用第三方依賴是可以用到。當(dāng)你發(fā)現(xiàn)別人的類已經(jīng)無法滿足你的需求,你可以自己實現(xiàn)個factory然后注入到容器里,然后創(chuàng)建你自己需要的bean。比如說mybatis里的sqlSessionFactory?里面我沒怎么細(xì)看。但應(yīng)該是一種擴(kuò)展第三方包功能的思路
抽象工廠,我本來想舉個不同媒介的存儲服務(wù)的例子,但我突然發(fā)現(xiàn)抽象工廠是一個很重的用法,因為抽象工廠更關(guān)注的是所創(chuàng)建的對象。但我們實際開發(fā)中突出的是服務(wù)的概念,也就是一種方法的實現(xiàn),所以完全可以把對象中我們真正要用的方法抽成接口,然后用簡單工廠就好了。
標(biāo)簽: