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

设计模式专题(九)

——外观模式

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

一、概述

外观模式(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微课堂之基本选择结构2

本节讲解知识点回顾 ? ? ? 本节编程技巧和注意事项 条件选择结构关于分号和大括号什么时候可以打,什么时候不用打,它的意义是不同的。

2606
来自专栏IMWeb前端团队

node网页分段渲染与bigpipe(一)

? 页面渲染,通常来说分为前端渲染以及后端渲染。前端渲染指的是服务端返回html框架以及模版,前端通过ajax异步请求拉取数据渲染模版,并动态修改dom,形成...

2115
来自专栏JAVA同学会

JAVA9模块化详解(一)——模块化的定义

java9已经出来有一段时间了,今天向大家介绍一下java9的一个重要特性——模块化。模块化系统的主要目的如下:

752
来自专栏mySoul

node web模块 (服务器端和客户端)

web服务器指网站服务器,指驻留在因特网上的某种程序,web浏览器的基本功能,提供信息浏览服务

1167
来自专栏一场梦

Servlet HTTP 状态码大全列表

1103
来自专栏www.96php.cn

【thinkphp】app接口签名+验证签名

【thinkphp】app接口签名+验证签名 app接口签名+验证签名 比较简单 求各位大牛指教 IndexController.class.php <?php...

4877
来自专栏玄魂工作室

CTF实战12 任意文件包含漏洞

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

913
来自专栏wannshan(javaer,RPC)

dubbo路由机制分析2(路由设置存储)

接上次 https://cloud.tencent.com/developer/article/1109552 目前dubbo支持的路由类型分三种condito...

2774
来自专栏IMWeb前端团队

react 和 redux 入门

本文作者:IMWeb 王少飞 原文出处:IMWeb社区 未经同意,禁止转载 react的核心思想:组件封装。 页面的所有元素都是可以封装成组件 rea...

1828
来自专栏栗霖积跬步之旅

git中的merge与rebase

2476

扫码关注云+社区