文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java设计模式之浅谈外观模式

2024-04-02 19:55

关注

简介

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

外观模式之理解

对于外观模式,我们可以理解为他是将一些复杂的接口或类进行隐藏,自己暴露出更为简单的操作方法,使得以我们不需要去对复杂方法的操作。就比如要完成一道工序,工序又有许多步骤,在不同情况要使用不同工序的方法,如果是传统的方式,一个一个调用,那么到一定量就会显得调用的复杂并且维护起来困难,因此可以使用外观模式,将一起使用的方法封装在一起,这样只需要调用这个外观的方法即可完成。
我们看一下外观模式的UML图:

实例

采用智能家居的例子来理解外观模式,例子很简单,当我们按下一键启动开关,就可以为我们打开/关闭窗户、电视、空调、灯光等。
先看一些类图:

具体代码如下:

①、定义子系统

子系统分为:灯光、空调、电视、窗户。采用单例模式,并且声明开启、关闭的方法。
这里只粘贴一个,其他的代码类似。

package com.lyd.demo.subsystem;

public class AirConditioner {
    private static AirConditioner airConditioner = new AirConditioner();
    public static AirConditioner getAirConditioner() {
        return airConditioner;
    }
    public void on() {
        System.out.println("智能家居为您打开[空调]");
    }
    public void off() {
        System.out.println("智能家居为您关闭[空调]");
    }
}

②、外观类

采用单例模式,实例化对象,并且根据需要去调用方法,暴露出接口即可完成,这里是启动所有设备,还可以根据需要去选择。

package com.lyd.demo.faced;
import com.lyd.demo.subsystem.AirConditioner;
import com.lyd.demo.subsystem.Lights;
import com.lyd.demo.subsystem.Tv;
import com.lyd.demo.subsystem.Windows;

public class SmartHomeFaced {
    private Lights[] lights = new Lights[4]; // 4盏灯
    private Tv tv;
    private AirConditioner airConditioner;
    private Windows windows;
    public SmartHomeFaced() {
        this.lights[0] = Lights.getLights();
        this.lights[1] = Lights.getLights();
        this.lights[2] = Lights.getLights();
        this.lights[3] = Lights.getLights();
        this.tv = Tv.getTv();
        this.airConditioner = AirConditioner.getAirConditioner();
        this.windows = Windows.getWindows();
    }
    public void openAll() {
        lights[0].on(0);
        lights[1].on(1);
        lights[2].on(2);
        lights[3].on(3);
        tv.on();
        airConditioner.on();
        windows.on();
    }
    public void offAll() {
        lights[0].off(0);
        lights[1].off(1);
        lights[2].off(2);
        lights[3].off(3);
        tv.off();
        airConditioner.off();
        windows.off();
    }
}

③、测试

调用外观暴露的接口方法就可以。

package com.lyd.demo.test;

import com.lyd.demo.faced.SmartHomeFaced;


public class FacedTest {
    public static void main(String[] args) {
        SmartHomeFaced smartHomeFaced = new SmartHomeFaced();
        smartHomeFaced.openAll();
        smartHomeFaced.offAll();
    }
}

运行结果:

好文推荐

今天的内容还算是简单好理解的,多看看,多动手理解就会更快!

?创作不易,可能有些语言不是很通畅,如有错误请指正,感谢观看!记得一键三连哦!?

到此这篇关于Java设计模式之外观模式的文章就介绍到这了,更多相关Java设计模式之外观模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯