详解java设计模式中的门面模式
作者:Mars.wang 时间:2021-08-17 18:16:25
门面模式又叫外观模式(Facade Pattern),主要用于隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。
我们知道电视剧操作很简单,但是里面的设计和原理很少人明白,这就是因为电视剧的设计应用了门面模式
一个电视剧至少需要有以下几个模块的功能:信号输入、音频处理、视频处理、信号输出等
/**
* 射频信号输入
*/
public class SignalIn {
//
}
* 音频/视频信号输出
public class SignalOut {
* 音频处理
public class AudioProcess {
* 视频处理
public class VideoProcess {
这里面的原理只有少数专业人士才能明白,为了让普通人都能使用电视剧,我们需要给电视剧提供一个易用的接口
/**
* 电视机
*/
public interface Television {
/**
* 电源开关
*/
public void powerSwitch();
* 切换频道
public void channelSwitch();
* 调节音量
public void volumeAdjust();
}
对于大多数人而言,会开关电视,能切换频道,能调节音量就可以了,其他的原理他不需要知道,也能使用电视机。
假如我们买了一天TCL电视,它内部设计可能很复杂,只要实现了上面的接口,我们就可以使用。
/**
* TCL电视机
*/
public class TCLTelevision implements Television{
private SignalIn in;
private AudioProcess audioProcess;
private VideoProcess videoProcess;
private SignalOut out;
@Override
public void powerSwitch() {
}
public void channelSwitch() {
public void volumeAdjust() {
}
这就是门面模式的强大之处。隐藏复杂的逻辑,暴露易用的接口。
来源:https://www.cnblogs.com/wangbin2188/p/15860045.html
标签:java,门面模式,设计模式
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
SpringBoot整合dataworks的实现过程
2023-11-29 12:13:09
Java实现双保险线程的示例代码
2023-09-21 07:59:46
Java实现简单邮件发送功能
2023-08-15 00:53:23
SpringBoot实现PPT格式文件上传并在线预览功能
2023-07-22 14:44:56
![](https://img.aspxhome.com/file/2023/3/57403_0s.png)
详解java WebSocket的实现以及Spring WebSocket
2023-11-24 13:16:25
![](https://img.aspxhome.com/file/2023/5/59885_0s.png)
Git工具 conflict冲突问题解决方案
2023-07-27 10:27:30
![](https://img.aspxhome.com/file/2023/1/57911_0s.png)
Mybatis配置之typeAlias标签的用法
2023-11-27 20:18:20
![](https://img.aspxhome.com/file/2023/6/60446_0s.jpg)
Java泛型的简单实例
2023-11-27 01:03:38
java IO流将一个文件拆分为多个子文件代码示例
2023-08-30 12:46:15
![](https://img.aspxhome.com/file/2023/3/58193_0s.jpg)
java property配置文件管理工具框架过程详解
2023-10-12 04:35:50
通过实例解析Spring Ioc项目实现过程
2023-11-24 10:12:33
![](https://img.aspxhome.com/file/2023/5/59745_0s.png)
一文让你搞懂如何手写一个redis分布式锁
2023-11-29 02:46:30
IDEA使用GsonFormat完成JSON和JavaBean之间的转换
2021-06-10 11:30:30
![](https://img.aspxhome.com/file/2023/8/61058_0s.png)
Java Thread.currentThread().getName() 和 this.getName()区别详解
2021-10-31 01:46:18
![](https://img.aspxhome.com/file/2023/4/61834_0s.png)
关于重写equals()方法和hashCode()方法及其简单的应用
2023-08-01 06:48:13
![](https://img.aspxhome.com/file/2023/5/57805_0s.jpg)
Linux下g++编译与使用静态库和动态库的方法
2023-06-21 13:41:46
![](https://img.aspxhome.com/file/2023/2/68232_0s.jpg)
分布式医疗挂号系统SpringCache与Redis为数据字典添加缓存
2023-06-28 02:26:55
![](https://img.aspxhome.com/file/2023/5/57405_0s.png)
Java计算文本MD5加密值的方法示例
2023-11-15 13:18:48
Java中的回调
2023-11-16 01:55:58
浅谈java中String StringBuffer StringBuilder的区别
2023-11-29 13:34:40