簡單工廠模式
概念: 工廠類對你傳入的參數(shù)判斷(可以寫在配置文件中)届榄,動態(tài)決定new 一個什么對象給你浅乔。(類似switch)。
缺點: 如果要新增一個對象痒蓬,需要在工廠類里面修改(類似增加一個switch 分支)違反了開閉原則童擎。
那么如何遵守開閉原則呢。請看工廠模式
工廠方法模式
概念: 對每一個類我都生成一個工廠類攻晒,那么新增類的時候,我只需要創(chuàng)建一個對應(yīng)的工廠類就可以了班挖,不需要修改原代碼鲁捏。(:三星工廠生產(chǎn)三星手機(jī),蘋果工廠生產(chǎn)蘋果手機(jī))
優(yōu)點:符合開閉原則萧芙,同時在工廠類中也可以做方法重載给梅。
缺點:類的膨脹,每一種類都需要定制一個工廠類
抽象工廠模式
概念:在抽象工廠中提供了不至一個類的工廠方法双揪,而是提供了某一個產(chǎn)品族的工廠方法动羽。想當(dāng)于蘋果工廠可以生產(chǎn)iphone,mac渔期,iwatch运吓,只需要一個工廠類就可以了渴邦。
優(yōu)點:
1.新增產(chǎn)品族很容易:比如我現(xiàn)在需要小米的全家桶,那好辦拘哨,我只需要增加一個小米工廠谋梭,里面有生產(chǎn)各個小米產(chǎn)品的方法。
- 當(dāng)一個產(chǎn)品族的對象被設(shè)計成一起工作時倦青,能保證客戶端使用的是同一個產(chǎn)品族瓮床。比如:你喜歡綠色的手機(jī)主題,那么該工廠生產(chǎn)的按鈕产镐,背景隘庄,鎖屏都是和綠色相關(guān)的,而不會出現(xiàn)其他顏色癣亚。再比如峭沦,你想開個蘋果專賣店,那么該工廠給你生產(chǎn)的都是蘋果的產(chǎn)品逃糟。
缺點:
1.新增產(chǎn)品線難吼鱼,比如蘋果的產(chǎn)品里現(xiàn)在多了一個蘋果汽車,那你就需要修改蘋果工廠了绰咽,需要為其增加一個生產(chǎn)汽車的方法菇肃。不符合開閉原則。
建造者模式
類的種類:
- director (負(fù)責(zé)指揮產(chǎn)品的構(gòu)建順序)
- builder (抽象建造者)
- buliderImpl (具體建造者)
- product (產(chǎn)品類)
適用場景:
- 產(chǎn)品類的構(gòu)建場景比較繁瑣(多個成員變量賦值)
- 一個產(chǎn)品類可以分為多個種類
比如說取募,電腦(產(chǎn)品類)包括cpu琐谤,內(nèi)存,磁盤玩敏,顯示器等斗忌,不同品牌的電腦配置都不一樣,都是基本屬性都是這些旺聚。那么對不同的電腦的建造可以生成多個建造器(由于建造屬性一樣织阳,所以繼承抽象建造者)。
蘋果電腦建造器:
- 建造屏幕:給你弄個retina視網(wǎng)膜顯示器
- 建造磁盤:給你個256g 的固體硬盤(太貴了砰粹。唧躲。)
。碱璃。弄痹。
聯(lián)想電腦建造器:
- 建造屏幕:給你弄個垃圾點的屏幕
- 建造磁盤:給你個弄個1T的磁盤
。嵌器。肛真。
說白了。建造器的指責(zé)就是為產(chǎn)品賦值爽航,可能復(fù)雜點的情況需要考慮順序蚓让。
director的職責(zé)
建造器只是聲明了產(chǎn)品的每個組件怎么造乾忱,具體開工還需要director指揮,比如先造那個凭疮。其實director的職責(zé)完全可以放在建造器中饭耳。
優(yōu)點:
1.客戶端不用關(guān)系產(chǎn)品的復(fù)雜創(chuàng)建過程
- 新增產(chǎn)品的種類時也符合開閉原則
缺點
- 適用于同一個產(chǎn)品的不同類別,如果產(chǎn)品的組成成分不相同就不適用了执解。
- 如果該產(chǎn)品的種類很多寞肖,那么每個種類都需要一個建造器,導(dǎo)致類的膨脹衰腌。