Java 设计模式之外观模式

作者: adm 分类: java 发布时间: 2022-08-09

一、定义
外观模式又称门面模式,是一种通过多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式,该模式对外有一个统一接口,外部不用关心子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。

主要角色:

外观角色:为多个子系统对外提供一个共同的接口。

子系统:实现系统的部分功能,客户可以通过外观角色访问它。

二、代码实现
举例:比如我每天下班回家都要开灯,打开电视,打开空调,但是这个过程我需要三步才能完成,所以我买了一个小爱同学,由小爱同学来帮我打开灯电视空调。其中灯,电视,空调就是指子系统,小爱同学指外观角色,接下来看代码;

灯(子系统)

public class Light {
    public void open(){
        System.out.println("打开了灯");
    }
}

电视(子系统)

public class Tv {
    public void open(){
        System.out.println("打开了电视");
    }
}

空调(子系统)

public class AirCondition {
    public void open(){
        System.out.println("打开了空调");
    }
}

小爱同学(外观角色)

public class XiaoAi {
    private Light light;
    private Tv tv;
    private AirCondition airCondition;

    public void open(){
        light = new Light();
        light.open();
        tv = new Tv();
        tv.open();
        airCondition = new AirCondition();
        airCondition.open();
    }
}

使用:

public static void main(String[] args) {
        XiaoAi xiaoai = new XiaoAi();
        xiaoai.open();
    }

输出:

打开了灯
打开了电视
打开了空调

外观模式降低了子系统与客户端之间的耦合度,使子系统的变化不会影响到调用它的客户类,对客户屏蔽了子系统组件,减少了客户端处理的对象数目,缺点是不符合开闭原则,修改很麻烦。当一个复杂的系统中子系统很多时,即可通过外观模式设计一个简单的接口供客户端访问。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!