设计模式-外观模式

news/2024/12/22 15:06:39/

目录

介绍

代码演示

屏幕

主机

键盘

电脑组装

​编辑 外观模式的注意事项和细节外观模式的注意事项和细节


介绍


1)外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供
一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
2)  外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端
只需跟这个接口发生调用,而无需关心这个子系统的内部细节
3)  解决思路:定义一个高层接口,给子系统中的一组接口提供一个一致的界面(比
如在高层接口提供四个方法ready, play, pause, end ),用来访问子系统中的一群接口
4)  也就是说就是通过定义一个一致的接口(界面类),用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节→>外观模式
 

代码演示

这里以一个电脑重要部件工作流程为简单示例

屏幕

public class Screen {//单例 饿汉模式private static  Screen instance = new Screen();public static Screen getInstance(){return instance;}public void open(){System.out.println("屏幕打开");}public void close(){System.out.println("屏幕关闭");}public void show(){System.out.println("屏幕显示画面");}
}

主机

public class Host {//单例 饿汉模式private static  Host instance = new Host();public static Host getInstance(){return instance;}public void open(){System.out.println("主机打开");}public void close(){System.out.println("主机关闭");}public void play(){System.out.println("主机开始工作");}
}

键盘

public class Keyboard {//单例 饿汉模式private static  Keyboard instance = new Keyboard();public static Keyboard getInstance(){return instance;}public void open(){System.out.println("无线键盘打开");}public void close(){System.out.println("无线键盘关闭");}public void play(){System.out.println("键盘开始工作,正在监听按键事件");}
}

电脑组装

public class Computer {//聚合部件private Screen screen;private Host host;private Keyboard keyboard;public Computer() {super();this.screen = Screen.getInstance();this.host = Host.getInstance();this.keyboard = Keyboard.getInstance();}//操作分三步//打开各个机器组件public void open(){screen.open();host.open();keyboard.open();}//各个部件开始工作public void work(){host.play();keyboard.play();screen.show();}//关闭各个部件public void close(){host.close();keyboard.close();screen.close();}
}

测试

 
外观模式的注意事项和细节外观模式的注意事项和细节

1) 外观模式对外屏蔽了子系统的细节,因此外观模式降低了客户端对子系统使用的复
杂性
2) 外观模式对客户端与子系统的耦合关系,让子系统内部的模块更易维护和扩展

3) 通过合理的使用外观模式,可以帮我们更好的划分访问的层次
4) 当系统需要进行分层设计时,可以考虑使用Facade模式
5) 在维护一个遗留的大型系统时,可能这个系统已经变得非常难以维护和扩展,此时
可以考虑为新系统开发一个Facade类,来提供遗留系统的比较清晰简单的接口,让新系统与Facade类交互,提高复用性
6) 不能过多的或者不合理的使用外观模式,使用外观模式好,还是直接调用模块好。
要以让系统有层次,利于维护为目的。
 


http://www.ppmy.cn/news/80731.html

相关文章

2023年美国大学生数学建模竞赛D题联合国可持续发展目标的优先次序解题全过程文档及程序

2023年美国大学生数学建模竞赛 D题 联合国可持续发展目标的优先次序 原题再现: 背景   联合国(UN)制定了17 项可持续发展目标(SDGs)。实现这些目标将最终改善世界各地许多人的生活。这些目标不是相互独立的。因此,在某些目标上的积极收获通常会对其他…

小白眼中的卷积神经网络(CNN)

相信和笔者一样爱技术对AI兴趣浓厚的小伙伴们,一定对卷积神经网络并不陌生,也一定曾经对如此“高级”的名字困惑良久。今天让我们一起回顾/学习这玩意到底是什么和为什么呢。 引言 说起CNN,必然会首先想到的是CV吧,而边缘检测可…

GPT前2代版本简介

承接上文ChatGPT进化的过程简介 2018年,Google的Bert和OpenAI的GPT绝代双骄,两者非常像,都是语言模型,都基本上是无监督的方式去训练的,你给我一个文本,我给你一个语言模型出来。 GPT前两代没有什么特别的…

《JavaEE》HTTPS

文章目录 HTTPS起源HTTPS对称加密非对称加密两者的区别 HTTPS的安全问题使用对称加密正常交互黑客入侵解决方案 非对称加密引入非对称加密后的流程 中间人攻击黑客的入侵方案加入后的流程解决方案黑客再次加注解决方案 ​👑作者主页:Java冰激凌 &#x1…

Java StringBuilder类

3 StringBuilder可变字符串类 StringBuilder是一个可变的字符串类,内容可以改变3.1 StringBuilder构造方法 范例public class Demo {public static void main(String[] args) {//创建空白可

ChatGPT是什么

什么是ChatGPT ChatGPT是一种基于人工智能技术的聊天机器人,它可以与用户进行自然语言交互,回答用户的问题,提供各种服务和娱乐功能。ChatGPT的核心技术是GPT(Generative Pre-trained Transformer),是一种…

如何在华为OD机试中获得满分?Java实现【最多提取子串数目】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 华为OD机试攻略:Java实现并讲解2022&2023真题 文章目录 1. 题目描述2. 输入描述…

雪花算法记录

引子 伴随着业务的日渐庞大,单库单表的数据库可能无法支持业务的读写,需要对数据库进行分库分表。 原来数据库中,通常使用自增id的方式生成主键。分库分表之后,如果仍然采用原来的方式,在多个表之间主键会发生重复。 …