美文网首页
Java 外观模式

Java 外观模式

作者: CodeDuan | 来源:发表于2022-02-09 14:01 被阅读0次

一、定义

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

主要角色:

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

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

二、代码实现

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

灯(子系统)

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();
    }

输出:

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

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

相关文章

  • 设计模式详解——外观模式

    本篇文章介绍一种设计模式——外观模式。本篇文章内容参考《JAVA与模式》之门面模式,外观模式,深入浅出外观模式(二...

  • 了解外观模式

    java 设计模式 ------外观模式 Java中一共有23种设计模式,每种设计模式各有特...

  • 外观模式(Facede)

    本文参考自: 《JAVA设计模式》之外观模式(Facade) 1. 作用 外观模式也叫门面模式,门面模式是对象的结...

  • java外观模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • Java外观模式

  • Java 外观模式

    文集地址[https://www.jianshu.com/nb/49360554] 一句话总结外观模式 封装子类的...

  • 外观模式-java

    概念: 又称门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型...

  • Java 外观模式

    一、定义 外观模式又称门面模式,是一种通过多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式,...

  • Java设计模式之11_Facade(外观模式)

    更多Java设计模式:Java设计模式-目录 一、模式定义 外观模式(Facade Pattern):外部与一个子...

  • Java设计模式——外观模式

    Java设计模式之外观模式 这期跟大家分享一下外观模式,跟前几期一样外观模式也是一种结构模式,都是为了使程序结构更...

网友评论

      本文标题:Java 外观模式

      本文链接:https://www.haomeiwen.com/subject/icmwkrtx.html