设计模式之外观模式

设计模式之外观模式

概述

外观模式(门面模式)在我看来就是封装思想的具体体现,是模块之间的封装,对外提供接口,这样可以减少耦合、增加代码复用,就好似将多个相同的步骤封装成方法一样。

这样使用方就不必关心具体的调用细节,从而减少耦合度,当不在需要一个模块时只需要修改门面中的具体方法,而调用方不用做出任何修改。

在其UML类图中主要有以下几种角色:

  • 客户端Client,也就是调用方
  • 门面:Facade 封装的对象
  • 具体的模块A、B、C

image-20201219102117124

A模块

public class A {
    void testA() {
        System.out.println("A模块中的方法testA被调用");
    }
}

由于其他模块代码类似,在此不再展示

Facade类

public class Facade {
    static void m() {
        new A().testA();
        new B().testB();
        new C().testC();
    }
}

Client类

public class Client {
    public static void main(String[] args) {
        Facade.m();
    }
}

这里Client依赖于Facade,而不直接依赖于ABC模块,降低了耦合度。

总结

Facade也可以是一个接口,在client端获取的是Facade接口,而在具体的实现类中可以有其他的非公开的方式与其他模块一块配合使用

有的书上说可以于工厂模式进行配合,我觉得这种虽然可以很方便的获取Facade接口类型的数据,但是也增加了系统复杂度。

意义不大

posted @ 2020-12-19 23:50  小鸡小鸡快点跑  阅读(68)  评论(0)    收藏  举报