工廠模式

為什么要叫工廠模式呢?就是為了生產(chǎn)對(duì)象!一個(gè)對(duì)象的創(chuàng)建過程比較復(fù)雜的時(shí)候,就可以使用工廠模式來創(chuàng)建對(duì)象。

工廠不是new一個(gè)對(duì)象,而是創(chuàng)建對(duì)象的過程,比方說new這個(gè)對(duì)象之前有100多行的準(zhǔn)備工作,比較復(fù)雜,就可以交給工廠來做。

Springcore的核心就是工廠模式,隱藏了創(chuàng)建對(duì)象的過程

SpringAOP的核心設(shè)計(jì)模式是代理模式

SpringMVC的核心設(shè)計(jì)模式是觀察者模式

問題:有了factoryMethod為什么還要abstractFactory?

我的答案:在factoryMethod當(dāng)中,工廠中除了有生產(chǎn)對(duì)象的工廠方法外還有自己的業(yè)務(wù)邏輯,擴(kuò)展的方式只能是通過繼承該類來擴(kuò)展,而在abstractFactory當(dāng)中,將該工廠方法抽象出一個(gè)接口,包含有生產(chǎn)對(duì)象的工廠方法,將自己的業(yè)務(wù)邏輯剔除出去放到一個(gè)調(diào)用的A類當(dāng)中,這樣做的好處是避免了通過繼承來擴(kuò)展工廠方法,而是采用聚合的方式來實(shí)現(xiàn)。

其實(shí)就是將AB兩個(gè)類拆成了AIB三個(gè),不在使用繼承的方式,而是采用聚合的方式。

簡單工廠:其實(shí)不算是一種設(shè)計(jì)模式,所以更應(yīng)該說工廠模式有兩種,即以下兩種。

工廠方法(factoryMethod):

抽象工廠(abstractFactory):

One uses inheritance and one uses composition.

One

creates only one product and the other creates a family of products.

One makes

use of the concrete types the subclasses create and the other's methods are

purely implemented to create products.


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容