前言

在一文了解MVI架构,学起来吧~这篇文章的最后,我们提到了对网域层的理解类似于门面模式,所以这里单独写一篇文章介绍一下门面模式。

再前言

面试的时候,面试官都会问用过什么设计模式,99%程序员的回答都是 单例模式,在多一点就是工厂模式。如果你能说到门面模式相信已经在面试官心中战胜了80%的人。那么什么是门面模式呢?

什么是门面模式

门面模式又叫做外观模式(Facade Design Pattern),是结构型设计模式的一种。我觉得也是设计模式中不管是应用场景还是实现方法最为简单的一种。门面模式简单的说就是为各个子系统提供统一的接口,使得子系统更易用。

我来举个例子 ,相信每个Android开发工程师是最有感触的。

提升App性能

我们以支付宝App为例(并不是支付宝的实现方案),比如我们现在有四个接口,其接口功能对应如下:

接口名称 接口作用
A 获取个人信息
B 获取首页菜单数据
C 获取实时咨询

这三个接口可能在“我的”等页面单独使用,但是在首页这个复杂的页面中,可能要同时获取个人信息、首页菜单数据、获取实时咨询。但是对服务器接口而言,这三个接口都是已经存在的。所以很多App的做法就是 直接在首页这个页面同时调用三个接口甚至更多。而频繁调用接口也增加了App与服务器之间的网络通信次数。

所以很多时候,最怕产品突然说“首页在加个***”,更怕服务器说 “我们再提供一个新接口***”,导致首页变得加载的越来越慢。关于这一点相信各位Android开发工程师都深有感触吧~

而使用门面模式就可以很容易的解决这个问题。再来回顾一下在上篇文章中对网域层的介绍。

现在有接口A、B、C、D。业务系统1模块需要调用ABC三个接口,业务系统2模块需要调用BCD接口。利用门面模式,我们新建两个门面接口分别提供给业务系统1和业务系统2使用。这里具体如何做就没必要举具体的例子了,因为只是接口的整合。在现有接口基础上,再多抽象一层用来放门面接口即可。再回到具体的App问题,我觉得处理的难点是,你如何说服服务器让他把N个接口做成一个门面接口呢,这个就靠个人魅力了。

除此之外,门面模式也可以很好的解决分布式中的事务问题,以及我们经常使用的Linux Shell命令都是门面模式的应用。

好了,了解到了这些,你已经掌握了门面模式的全部知识了。这样你是否对MVI中的网域层有了更深的了解呢?

写在最后

设计模式是非常重要的基础知识,是架构搭建、写好代码的基础支撑。如果你想学习其他的设计模式,欢迎评论区告诉我,你说我来写~

重学设计模式——你听说过门面模式吗?相关推荐

  1. 重学设计模式--读后总结篇,我理解的设计模式!!(二)

    极力推荐小傅哥的重学设计模式!!! 一.二十三种设计模式 1.二十三种设计模式 1.1 工厂方法模式 1.2 抽象工厂模式 1.3 建造者模式 1.4 原型模式 1.5 单例模式 1.6 适配器模式 ...

  2. 重学设计模式——你真的面向对象了吗?

    /   今日科技快讯   / 据报道,微软昨日宣布收购游戏公司动视暴雪.微软将以每股95.00美元的价格收购动视暴雪,这笔全现金交易价值687亿美元.交易完成后,微软将成为按营收计算的全球第三大游戏公 ...

  3. 《重学设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料...

    持续坚持原创输出,点击蓝字关注我吧 作者:小傅哥 博客:https://bugstack.cn ❝ 沉淀.分享.成长,让自己和他人都能有所收获!???? ❞ 目录 一.前言 二.简介 1. 谁发明了设 ...

  4. IOS设计模式之二(门面模式,装饰器模式)

    本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq) ...

  5. 设计模式之禅【门面模式】

    真刀实枪之门面模式 从投递信件说起 写过纸质信件没,如果你是00后,那机会应该很少,不过没关系,先来看看步骤 写信的内容 写信封 把信放到信封 投递到信箱中进行邮递 看下该过程的类图 趁热打铁,代码跟 ...

  6. 设计模式之【外观/门面模式】,不打开这扇门永远不知道门后有多少东西

    文章目录 一.什么是外观模式(门面模式) 1.外观模式的结构 2.使用场景 3.外观模式的优缺点 4.外观模式注意事项 二.实例 1.外观模式的通用写法 2.智能家居案例 3.积分换礼品案例 参考资料 ...

  7. 设计模式的理解 : 门面模式、外观模式 (Facade)

    门面模式又称外观模式:主要思想就是用一个提供些专门进行对外访问的接口,避免外部程序直接调用内部方法,对内部方法进行有效的屏蔽. 以医院为例 : (转自 菜鸟教程) 一个医院的系统功能有多种,如果让病人 ...

  8. 设计模式系列之「门面模式」

    <三国演义>中有曰:刘备.诸葛亮趁曹操赤壁之战失利,大肆扩充地盘,先后占领荆州大部地区,引起东吴孙权的警惕.为了限制刘备势力的发展,鲁肃奉命向刘备讨还荆州,但遭到拒绝.东吴大都督周瑜向孙权 ...

  9. java设计模式总结七:门面模式

    门面模式定义 门面模式也称外观模式,门面模式实现了子模块和客户端之间的松耦合关系,从而屏蔽了子模块内部的实现细节.只是将客户端需要的接口提供给客户,这样一来子模块组件如果发生变化,修改接口就可以了,不 ...

最新文章

  1. C/C++代码静态检查工具PC-lint在VS2008开发环境中的安装配置和使用
  2. Centos Docker安装、升级、卸载
  3. BeyondCompare
  4. Apache设置文件缓存时间
  5. android iot代码设计,一个简单好用的Android Tab 设计与实现
  6. SpringMvc-NativeWebRequest接口
  7. 微软建了个内部AI大学:“我们很缺人!是时候增强自我造血能力了”
  8. 【iCore4 双核心板_ARM】例程十八:USBD_VCP实验——虚拟串口
  9. linux中vi编辑后如何保存,[转]Linux vi 编辑后如何保存
  10. python没有报错但是没结果_python爬取豆瓣top250的电影的信息,没有报错哦,但是没有结果...
  11. JAVA WEB 设置session过期时间
  12. Docker Desktop 安装使用教程
  13. 精确计算——BigDecimal的使用
  14. 四年级下册计算机作业,科学(四年级下册)作业.doc
  15. powershell牛逼啊.
  16. php语音直播怎么做,语音直播功能实现流程
  17. Dubbo源码分析(一):概览
  18. Java 将Map转成Json
  19. PHP对接企业微信审批回调
  20. kvc实践一:核心方法和进阶

热门文章

  1. 第一次项目总结之兄弟连缘分情深(终极版) - 战地日记
  2. 耐压试验装置串联谐振有什么突出特点吗
  3. 隐马尔可夫模型-standford
  4. AJAX跨域问题及解决方案
  5. 2022年R1快开门式压力容器操作操作证考试题库及在线模拟考试
  6. SpringBoot - 自定义启动Banner
  7. 语音识别框架原理简述
  8. 嵌入式Linux应用层开发教程(一)基本概念
  9. 树莓派4B安装BatoceraV35版本 下篇
  10. 网络爬虫pyppeteer、selenium模拟浏览器抓取数据