设计模式 - 门面模式(外观模式)

门面模式:对于一个子系统,高层模块与其通信必须通过一个统一的对象进行,降低高层模块与子系统的耦合程度
核心:封装/隔离,降低模块之间的依赖

  • 子系统与高层之间通过facade对象完成通信,底层的修改不会影响高层代码
  • 访问者无需知晓底层模块的组件结构,只需和facade进行通信即可 - 保持facade对象的稳定即可屏蔽子系统改动的风险
  • 将多个步骤合并成一个方法对外提供功能,降低模块间代码的耦合度 --- 案例:Utils工具类
// 门面类,对外提供统一接口
public class Facade {
    private SystemA systemA = new SystemA();
    private SystemB systemB = new SystemB();
    private SystemC systemC = new SystemC();

    public void doA(){
        systemA.doA();
    }
    public void doB(){
        systemB.doB();
    }
    public void doC(){
        systemC.doC();
    }

    // 将多个有序步骤合并,对外提供统一接口,简化外部代码,降低耦合
    public void doWork(){
        doA();
        if(Math.random() > 0.5) {
            doB();
        }
        doC();
    }
}
···
posted @ 2020-11-27 20:27  祁奇  阅读(76)  评论(0编辑  收藏  举报