当前位置: 首页 > news >正文

设计模式—结构型模式之外观模式(门面模式)

设计模式—结构型模式之外观模式(门面模式)

外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。

例子

我们的电脑会有很多 组件,比如CPU、硬盘、内存等等;如果我们电脑需要启动的话,需要挨个去调用每个组件的启动方法;停止逻辑也是一样;我们可以提取到一个组合的类中,提供一个整体的启动方法,直接调用,这就是门面模式的使用。

代码如下:

public class Cpu {public void start(){System.out.println("CPU启动了");}
}
public class Disk {public void start(){System.out.println("硬盘启动了");}
}
public class Memory {public void start(){System.out.println("内存启动了");}
}
/*** 门面类*/
public class ComputerFaced {private Cpu cpu;private Memory memory;private Disk disk;public ComputerFaced(){this.cpu = new Cpu();this.memory = new Memory();this.disk = new Disk();}public void start(){this.cpu.start();this.memory.start();this.disk.start();}
}

我们的客户使用,就是如下:

public class FacedTest {public static void main(String[] args) {ComputerFaced computerFaced = new ComputerFaced();computerFaced.start();}
}

运行如下:

运行截图

相关文章:

  • JOSEF 同步检查继电器 JT-1 额定电压100V 柜内固定安装,板前接线
  • 【数据结构初阶】单链表SLlist
  • 3 redis实现一个消息中间件
  • “我“摸爬滚打5年,干了测试工程师,现在测试怎么样了...
  • Spark数据倾斜_产生原因及定位处理办法_生产环境
  • 多视图聚类的论文阅读(一)
  • “绵柔的,好喝的”海之蓝畅销20年的经典秘诀:做大众喜爱的好酒
  • Ubuntu 22.04 LTS ffmpeg mp4 gif 添加图片水印
  • [uni-app] uni.showToast 一闪而过问题/设定时间无效/1秒即逝
  • 将 ONLYOFFICE 文档编辑器与 Node.js 应用集成
  • requests爬虫IP连接初始化问题及解决方案
  • Flutter 中数据存储的四种方式
  • Vue 路由缓存 防止路由切换数据丢失 路由的生命周期
  • 使用 Splashtop 的开放 API 简化 IT 工作流程
  • 大一,小小练习题--含答案
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Android框架之Volley
  • ECS应用管理最佳实践
  • extjs4学习之配置
  • MD5加密原理解析及OC版原理实现
  • MQ框架的比较
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • passportjs 源码分析
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 关于springcloud Gateway中的限流
  • 浅谈Golang中select的用法
  • 怎么把视频里的音乐提取出来
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 如何用纯 CSS 创作一个货车 loader
  • ​Spring Boot 分片上传文件
  • # 数据结构
  • (02)Hive SQL编译成MapReduce任务的过程
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Sql Server 保留几位小数的两种做法
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET连接MongoDB数据库实例教程
  • .net连接oracle数据库
  • .net中调用windows performance记录性能信息
  • .net中应用SQL缓存(实例使用)
  • @Transactional类内部访问失效原因详解
  • [ 数据结构 - C++]红黑树RBTree
  • [20150904]exp slow.txt
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [Asp.net mvc]国际化
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [Django 0-1] Core.Handlers 模块
  • [FC][常见Mapper IRQ研究]