為什么要叫工廠模式呢勉痴?就是為了生產(chǎn)對象我纪!一個對象的創(chuàng)建過程比較復(fù)雜的時候,就可以使用工廠模式來創(chuàng)建對象潜支。
工廠不是new一個對象甸赃,而是創(chuàng)建對象的過程,比方說new這個對象之前有100多行的準(zhǔn)備工作毁腿,比較復(fù)雜辑奈,就可以交給工廠來做苛茂。
Springcore的核心就是工廠模式已烤,隱藏了創(chuàng)建對象的過程
SpringAOP的核心設(shè)計模式是代理模式
SpringMVC的核心設(shè)計模式是觀察者模式
問題:有了factoryMethod為什么還要abstractFactory?
我的答案:在factoryMethod當(dāng)中,工廠中除了有生產(chǎn)對象的工廠方法外還有自己的業(yè)務(wù)邏輯妓羊,擴(kuò)展的方式只能是通過繼承該類來擴(kuò)展胯究,而在abstractFactory當(dāng)中,將該工廠方法抽象出一個接口躁绸,包含有生產(chǎn)對象的工廠方法裕循,將自己的業(yè)務(wù)邏輯剔除出去放到一個調(diào)用的A類當(dāng)中,這樣做的好處是避免了通過繼承來擴(kuò)展工廠方法净刮,而是采用聚合的方式來實現(xiàn)剥哑。
其實就是將AB兩個類拆成了AIB三個,不在使用繼承的方式淹父,而是采用聚合的方式株婴。
簡單工廠:其實不算是一種設(shè)計模式,所以更應(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.