23种设计模式之门面模式
門面模式的定義
定義: 要求一個(gè)子系統(tǒng)的外部與其內(nèi)部的通信必須通過(guò)一個(gè)統(tǒng)一的對(duì)象進(jìn)行. 門面模式提供一個(gè)高層次的接口, 使得子系統(tǒng)更易于使用.
通俗的說(shuō), 就是設(shè)計(jì)一個(gè)類,專門用于對(duì)外服務(wù)的, 門面對(duì)象是外界訪問(wèn)子系統(tǒng)內(nèi)部的唯一通道
其類圖如下:
?
其中兩個(gè)角色如下:
子系統(tǒng)代碼如下:
?
門面對(duì)象代碼:
?
門面模式的應(yīng)用
門面模式的優(yōu)點(diǎn):
門面模式的缺點(diǎn):
門面模式最大的缺點(diǎn)就是不符合開(kāi)閉原則, 對(duì)修改關(guān)閉, 對(duì)擴(kuò)展開(kāi)放. 一旦在系統(tǒng)投產(chǎn)后發(fā)現(xiàn)有一個(gè)小錯(cuò)誤, 怎么解決? 完全最從開(kāi)閉原則,根本沒(méi)辦法解決. 唯一能做的一件事就是修改門面對(duì)象的代碼, 這個(gè)風(fēng)向相當(dāng)大.
門面模式的使用場(chǎng)景:
門面模式的注意事項(xiàng)
1.一個(gè)子系統(tǒng)可以有多個(gè)門面
?
增加的門面非常簡(jiǎn)單, 委托給已經(jīng)存在的門面對(duì)象來(lái)處理. 這樣可以盡量保持相同的代碼只編寫一遍, 避免以后到處修改相似代碼的悲劇.
2.門面不參與子系統(tǒng)內(nèi)的業(yè)務(wù)邏輯
門面對(duì)象中不要出現(xiàn)具體的業(yè)務(wù)邏輯代碼, 否則就會(huì)產(chǎn)生一個(gè)倒依賴的問(wèn)題, 在門面模式中, 門面角色應(yīng)該是穩(wěn)定的, 它不應(yīng)該經(jīng)常變化, 一個(gè)系統(tǒng)一旦投入運(yùn)行他就不應(yīng)該被改變, 它是一個(gè)系統(tǒng)對(duì)外的接口, 變來(lái)變?nèi)ミ€怎么保證其他模塊的穩(wěn)定運(yùn)行呢?
如果一定要出現(xiàn)業(yè)務(wù)處理, 應(yīng)該建立一個(gè)封裝類, 封裝完畢后提供給門面對(duì)象使用.
門面模式是一個(gè)很好的封裝方法, 一個(gè)子系統(tǒng)比較復(fù)雜時(shí), 比如算法或者業(yè)務(wù)比較復(fù)雜, 就可以封裝出一個(gè)或多個(gè)門面出來(lái), 項(xiàng)目的接口簡(jiǎn)單, 而且擴(kuò)展性非常好. 還有, 對(duì)于一個(gè)較大的項(xiàng)目, 為了避免人員帶來(lái)的風(fēng)險(xiǎn), 也可以使用門面模式.
總結(jié)
以上是生活随笔為你收集整理的23种设计模式之门面模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ZJU期末考试记录(研究生)——数据挖掘
- 下一篇: 23种设计模式之访问者模式