设计模式之外观模式(Facade Pattern)外观模式的优缺点

外观模式外部访问内部复杂代码的一个接口,举个例子,我们知道打开一台电脑很简单,只要按开机键,但实际上在后台我们看不到的地方,计算机进行了很多复杂的工作,比如,cpu。内存。硬盘等的启动。但我们不需要亲自去启动这些复杂的步骤,我们只需要知道按下开机键,电脑就会启动。 实际上这里就是使用了外观模式,外观模式提供了一个简单的接口,为我们封装好了访问内部代码的复杂操作,有了外观模式,我们只需要简单的按下开机键,就可以自动调用cpu。硬盘。内存的方法帮我们启动电脑。

Paste_Image.png

参看外观模式的类图,我们可以看到外观模式将多个复杂的操作封装起来,只对外提供一个简单的接口。

下面我们就简单的实现一个外观模式,以电脑的启动为例:

class CPU {
    public void processData() { }
}
 
class Memory {
    public void load() { }
}
 
class HardDrive {
    public void readdata() { }
}
 
/* Facade */
class Computer {
    private CPU cpu;
    private Memory memory;
    private HardDrive hardDrive;
 
    public Computer() {
        this.cpu = new CPU();
        this.memory = new Memory();
        this.hardDrive = new HardDrive();
    }
 
    public void run() {
        cpu.processData();
        memory.load();
        hardDrive.readdata();
    }
}
 
 
class User {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.run();
    }
}

外观模式将子系统的方法封装起来,提供一个更上层的接口,提供更简单的访问

![Upload Paste_Image.png failed. Please try again.]

外观模式的优缺点

优点

  • 减小系统间的相互依赖
  • 提高灵活性
  • 减小系统依赖
  • 提高安全性

缺点

  • 不符合开闭原则,对修改关闭,对扩展开放 我们知道外观模式将子系统封装起来,我们无法修改子系统,只能外部扩展

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

原创投稿 | Zabbix的编译安装并发送通知邮件

1.写在前面 本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的环境是LAMP。以及实现简单的监控任务,在发...

39980
来自专栏jiajia_deng

正确处理安装程序提示 “这个程序可能安装不正确” 问题

16840
来自专栏Java学习之路

从初识Maven到使用Maven进行依赖管理和项目构建

前些天就安装了Maven,以备自己以后整合项目用,尤其是我们的ssh,ssm项目。想必好多人在开始的时候并不清楚Maven是什么,它能够帮助我们干什么。 所以...

39670
来自专栏PHP在线

PHP中9大缓存技术总结

[导读] 1、全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比...

34050
来自专栏容器云生态

Ansible基本配置以及使用示例

##Ansible基本使用以及模块详解 准备条件:注意:前提是ansible已经正常安装,并且可以使用 1.在ansible主机上创建ssh公私钥对 ansib...

25190
来自专栏主机笔记

安装serverstatus监控多台服务器状态

如果是一台服务器很好管理,但是服务器多了,就很容易忘记,因此就需要一个监控的平台。serverstatus是一个开源的服务器监控系统,可以利用serversta...

95870
来自专栏vue学习

vue-cli安装、node-sass安装、mintUI组件库安装

1、使用淘宝npm镜像 在node中很多安装失败的原因就是因为国内网络限制因素,所以使用淘宝镜像有利于解决这方面问题。(使用了翻墙、vpn,用install命...

32330
来自专栏进击的君君的前端之路

如何发布npm包

14020
来自专栏Jerry的SAP技术分享

如何在ubuntu上安装virtualbox的driver module vboxdrv

干净的ubuntu安装完毕之后是没有vboxdrv这个driver module的。

38540
来自专栏PhpZendo

Apache Kafka 在 Windows 系统上设置与运行教程

手把手教你在 Windows 系统安装运行 Apache Zookeeper 和 Apache Kafka 服务。

31520

扫码关注云+社区

领取腾讯云代金券