門面模式
又叫外觀模式,提供一個(gè)統(tǒng)一的接口巡扇,用來訪問子系統(tǒng)中的一群接口厅翔,定義一個(gè)高層接口,讓子系統(tǒng)更易用刀闷,屬于結(jié)構(gòu)型模式
現(xiàn)實(shí)使用
MVC架構(gòu)中代碼的controller仰迁,service基本都屬于外觀模式
門面模式與代理模式
門面模式就是代理模式的一種(特殊的靜態(tài)代理)
門面模式的重點(diǎn)是封裝子系統(tǒng)徐许,代理模式的重點(diǎn)是增強(qiáng)子系統(tǒng)
門面模式與單例模式
通常會(huì)把門面模式做成單例卒蘸,例如工具包
外觀模式優(yōu)點(diǎn)
- 簡(jiǎn)化調(diào)用過程,無需深入子系統(tǒng)缸沃,防止子系統(tǒng)帶來風(fēng)險(xiǎn)
- 減少系統(tǒng)之間的依賴趾牧,松散耦合
- 更合理的劃分層次,提高安全性
- 遵循迪米特法則武氓,即最少知道法則
外觀模式缺點(diǎn)
- 當(dāng)增加子系統(tǒng)或擴(kuò)展子系統(tǒng)行為時(shí),容易帶來風(fēng)險(xiǎn)
- 不符合開閉原則东羹,子系統(tǒng)的修改會(huì)導(dǎo)致代碼修改
- 在某些情況下忠烛,違背單一職責(zé)原則