门面模式也叫着外观模式:要求一个子系统的外部与其内部的通信必须通过一个统一的接口。该接口不允许任何访问子系统的行为发生;注意子系统是一种泛称,在项目中可能是一个模块的代码,也可能是一个类,其中controller—>service可以从某种程度上看做是一种外观模式,依赖方只需要调用controller即可,而不用关注service层的具体业务逻辑
其UML类图如下
门面模式
优点:
1 提高了封装,避免依赖于底层的直接耦合
2 提高了安全性,门面开启相应方法,依赖才可以调用
3 提高了灵活度,门面下的子系统可以自由变化
缺点: 不符合开闭原则,当门面的代码不符合现有业务,往往要做的是修改
使用场景: 门面模式适合:一个复杂的子系统通过提供一系列的接口从而被访问;
说到门面模式不得不说mybatis的接口,这是一个典型的通过提供简单的接口完成复杂访问的优秀框架
这样的接口,从某种程度上来说就是一个门面