详解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,门面模式,设计模式
0
投稿

猜你喜欢

  • 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
  • 详解java WebSocket的实现以及Spring WebSocket

    2023-11-24 13:16:25
  • Git工具 conflict冲突问题解决方案

    2023-07-27 10:27:30
  • Mybatis配置之typeAlias标签的用法

    2023-11-27 20:18:20
  • Java泛型的简单实例

    2023-11-27 01:03:38
  • java IO流将一个文件拆分为多个子文件代码示例

    2023-08-30 12:46:15
  • java property配置文件管理工具框架过程详解

    2023-10-12 04:35:50
  • 通过实例解析Spring Ioc项目实现过程

    2023-11-24 10:12:33
  • 一文让你搞懂如何手写一个redis分布式锁

    2023-11-29 02:46:30
  • IDEA使用GsonFormat完成JSON和JavaBean之间的转换

    2021-06-10 11:30:30
  • Java Thread.currentThread().getName() 和 this.getName()区别详解

    2021-10-31 01:46:18
  • 关于重写equals()方法和hashCode()方法及其简单的应用

    2023-08-01 06:48:13
  • Linux下g++编译与使用静态库和动态库的方法

    2023-06-21 13:41:46
  • 分布式医疗挂号系统SpringCache与Redis为数据字典添加缓存

    2023-06-28 02:26:55
  • 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
  • asp之家 软件编程 m.aspxhome.com