門面模式也叫着外觀模式:要求一個子系統的外部與其內部的通信必須通過一個統一的接口。該接口不允許任何訪問子系統的行爲發生;注意子系統是一種泛稱,在項目中可能是一個模塊的代碼,也可能是一個類,其中controller—>service可以從某種程度上看做是一種外觀模式,依賴方只需要調用controller即可,而不用關注service層的具體業務邏輯
其UML類圖如下
門面模式
優點:
1 提高了封裝,避免依賴於底層的直接耦合
2 提高了安全性,門面開啓相應方法,依賴纔可以調用
3 提高了靈活度,門面下的子系統可以自由變化
缺點: 不符合開閉原則,當門面的代碼不符合現有業務,往往要做的是修改
使用場景: 門面模式適合:一個複雜的子系統通過提供一系列的接口從而被訪問;
說到門面模式不得不說mybatis的接口,這是一個典型的通過提供簡單的接口完成複雜訪問的優秀框架
這樣的接口,從某種程度上來說就是一個門面