设计模式专题(九) ——外观模式

设计模式专题(九)

——外观模式

(原创内容,转载请注明来源,谢谢)

一、概述

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

二、优点

1、在设计初期阶段,根据业务层级,将不同的层级进行分离,如数据访问层、业务逻辑层、业务展示层进行分离,不同的层级实现该层必须的功能。

2、通过其他设计模式,通常会生成很多的类,则可以用外观模式配合其他模式,实现将功能封装起来,仅要求固定格式的输入,并告知返回内容,将功能做成接口,便于调用。

3、当需要进行系统底层架构改造时,也可以将原先的系统部分比较重要的底层架构,用外观模式完全封装起来,新的系统架构在满足兼容原先的模式的前提下,进行新框架的开发。

三、类图

四、运用场景

外观模式最常用于APP接口开发、API开发、系统间服务调用。

现在APP开发模式通常是IOS/Android(客户端)负责编写页面,数据交互用PHP/JAVA等服务端语言进行实现。因此,就存在前后台的调用。

客户端和服务端通过JSON进行传参。在项目开发中,对于设计两端交互的,通常两边的开发人员需要定下接口文档,规定实现某个功能(例如登陆)需要调用的方法路径与名称,客户端传入参数的格式、字段名、数据类型,服务端返回的参数名、格式、数据类型。此时,即实现外观模式。

假设服务端定义一个bool checkLogin($user,$pass),用于登陆的验证。对于客户端而言,不用关心服务端如何实现验证登陆,只需要知道调用某路径下的此方法,传入string类型的用户名和密码,即可接收到bool类型的返回值。

因此,可以将外观模式简单看作方法的调用,对于调用者来说,相当于存在一个方法checkLogin可供调用,而服务端需要去具体实现验证的过程。

——written by linhxx 2017.08.01

相关阅读:

设计模式专题(八) ——模板方法模式

设计模式专题(七)——建造者模式

设计模式专题(六)——原型模式

设计模式专题(五)——工厂方法模式

设计模式专题(四)——代理模式

设计模式专题(三)——装饰模式

设计模式专题(二)——策略模式

设计模式专题(一)——面向对象的设计原则

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2017-08-01

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Activiti学习详解【面试+工作】

一:Activiti第一天 1:工作流的概念 ? 说明: 1) 假设:这两张图就是XX兄弟的请假流程图 2) 图的组成部分: A. 人物:范XX 冯X刚 王X军...

4015
来自专栏曾柏羲的专栏

Vue 浅析与实践

本文首先对 Vue 的相关技术进行简单介绍与分析,接着总结开发实践(主要描述 Vuex 实践)过程中的流程规范,并记录在此过程中遇到的问题与关键点,最后做出一点...

3602
来自专栏美团技术团队

Node.js Stream - 实战篇

背景 前面两篇(基础篇和进阶篇)主要介绍流的基本用法和原理,本篇从应用的角度,介绍如何使用管道进行程序设计,主要内容包括: 管道的概念 Browserify的...

3395
来自专栏salesforce零基础学习

salesforce 零基础学习(六十九)当新增/修改一条记录以后发生了什么(适合初学者)

salesforce开发中,我们会对object进行很多的操作,比如对object设置字段的必填性唯一性等,设置validation rule实现一下相关的字段...

1838
来自专栏决胜机器学习

有趣的算法(十) ——归并排序思想解决大量用户数据清洗

有趣的算法(十)——归并排序思想解决用户数据清洗 (原创内容,转载请注明来源,谢谢) 一、问题阐述 近期工作中接触到一个很有趣的算法,在此进行分享。 当前有...

3339
来自专栏cloudskyme

jbpm5.1介绍(2)

快速开始  首先下载jBPM,http://sourceforge.net/projects/jbpm/files/ 可以有选择性的下载: bin:jBPM的二...

3286
来自专栏我和PYTHON有个约会

爬虫 0030~ requests利刃出鞘

requests第三方封装的模块,通过简化请求和响应数据的处理,简化繁琐的开发步骤和处理逻辑、统一不同请求的编码风格以及高效的数据处理特性等而风靡于爬虫市场。

631
来自专栏我和PYTHON有个约会

爬虫正传-江湖路远-0105-谁的刀快谁就有理

在web操作领域,为了减轻响应数据的体积和保证数据完整性的考虑,可以在浏览器允许的情况下,将数据压缩返回,压缩操作方式目前一般支持主流的两重操作方式[Accep...

492
来自专栏owent

protobuf-net的动态Message实现

这本来是个早就可以写的分享。因为代码几周前就迁移并准备好了。而且这也是之前项目的工具,因为可以抽离出来通用化所以单独整理出来。

761
来自专栏性能与架构

高性能流水线页面技术 BigPipe

网站速度是Facebook的重要目标,2009年,Facebook成功的使网站快了两倍,工程师团队为此做了多项创新,BigPipe就是其中的一个秘密武器 Big...

3295

扫描关注云+社区