•Gateway入口

  ◦一个封装了对外部系统或资源访问的对象.

    ◾OO系统中,也需要访问一些不是对象的事物,DB表,XML,事务.

    ◾这些外部资源的API很复杂.

    ◾入口类对象将简单的方法调用转换成相应的特定API.

  ◦运行机制

    ◾本质上是简单的包装器模式.

    ◾封装外部资源,创建一个简单的API,并用入口将对该API的调用转移到外部资源上.

    ◾它可以作为使用服务桩的极佳位置.

    ◾应尽可能保持入口简单.复杂的逻辑应该放在入口的客户中.

    ◾有时需要多个对象来构造入口

    ◾常见的:一个后端,一个前端.

      ◾后端封装对外部资源操作的代码,但并不简化其API.

      ◾前端将复杂API转换为对APP可用的,更为简单的操作.

      ◾当从外部服务到客户所需的形式的适配很复杂时使用.

    ◾反之,如果对外部服务的封装工作很简单时,一个类完成封装和适配即可.

  ◦使用时机

    ◾如果必须通过一个复杂的接口与位于系统之外的事务交互时,可以考虑

    ◾入口将复杂性封装起来.提高了入口之外的代码的可读性.

    ◾入口使系统更易于测试.

    ◾使得用一种资源替代另一种资源变得更加容易.简单而高效的变更保护形式.

    ◾对比外观模式

      ◾入口是客户方为了其特定应用而编写的.外观是由服务的作者提供.

      ◾外观通常暗示一个与原始接口不同的接口.而入口很可能是为了测试或替换资源目的而简单的照搬被包装的接口.

    ◾对比适配器模式

      ◾适配器修改一个已实现的接口,使其与另一个接口相匹配.

      ◾入口模式中,没有一个已存在的接口.

    ◾对比调停者模式

      ◾调停者用来将多个对象解耦,使它们无需互相引用,而只需与调停者发生关联.

      ◾入口模式中通常只涉及两个对象.且被包装资源并不知道入口的存在.

  ◾通常在创建入口时将其保存在一个公共的位置,来保证其他类能定位它.可以使用静态类.

Base Pattern基本模式_Gateway入口的更多相关文章

  1. PHPCMS V9 框架代码分析(入口程序)

    PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口. 入口程序是在前期处理用户请求的引导程序.它是 ...

  2. vue-cli之打包多入口配置

    在使用vue-cli初始化vue项目时,默认打包为单入口,有时候一个项目可能会有不同入口,在这种情况下,就需要我们稍微修改下webpack配置文件了,具体步骤如下: 1.修改webpack.base. ...

  3. SaltStack系列(四)之实例编写

    前面已经介绍的够多了,这里来让我们写一些完整的实例来梳理一下. 强调一下,sls文件的抒写格式都是"-"后面跟一个空格,然后后面跟参数: 然后后面再跟一个空格,然后是要填写的值.但 ...

  4. 一不小心写了个WEB服务器

    开场 Web服务器是啥玩意? 是那个托管了我的网站的机器么? No,虽然那个也是服务器,但是我们今天要说的Web服务器主要是指像IIS这样一类的,用于处理request并返回response的工具,没 ...

  5. saltstack之(八)配置管理部署LAMP

    场景:公司有10台服务器需要安装lamp测试环境,使用saltstack编写state文件进行批量部署,可以提高工作效率,减少人为出错的可能性,保证环境的一致性. saltstack之配置管理lamp ...

  6. 删除目录下的所有".svn"文件

    丢一段python代码: # -*- coding: cp936 -*- import os import re import shutil '''找出路径base(包括子目录)下所有符合patter ...

  7. 《初识PE》导出表

    转自:http://www.blogfshare.com/pe-export.html (二).导出表 当PE文件被执行的时候,Windows装载器将文件装入内存并将导入表中登记的DLL文件一并装入, ...

  8. 基于webpack2.x的vue2.x的多页面站点

    vue的多页面 依旧使用vue-cli来初始化我们的项目 然后修改主要目录结构如下: ├── build │   ├── build.js │   ├── check-versions.js │   ...

  9. 发布自己第一个npm 组件包(基于Vue的文字跑马灯组件)

    一.前言 总结下最近工作上在移动端实现的一个跑马灯效果,最终效果如下: 印象中好像HTML标签的'marquee'的直接可以实现这个效果,不过 HTML标准中已经废弃了'marquee'标签 既然HT ...

随机推荐

  1. 利用FluorineFx的ByteArray上传图片

    Flex端利用new PNGEncoder().encode(bitmapData)将png图片转换为ByteArray,然后传给服务器,服务端需要定义一个public ByteArray Uploa ...

  2. vs开发工具之--自动生成注释

    GhostDoc是Visual Studio的一个免费插件,轻松一个快捷键CTRL+SHIFT+D就能够帮助自动生成注释 下载地址:http://submain.com/download/ghostd ...

  3. SMO优化算法(Sequential minimal optimization)

    原文:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html SMO算法由Microsoft Research的John C. ...

  4. 动漫网站基于jquery的横向手风琴特效

    今天给大家分享一款动漫网站基于jquery的横向手风琴特效.这款手风琴特效适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预 ...

  5. 基于Docker服务的java Web服务搭建

    导读 最近想我们的应用需要更新维护,Android.IOS.还有服务器端都要更新,都在忙于写代码没有写文章了.我们的服务器是用java ssh架构的,到时也打算切换成Spring MVC+oauth2 ...

  6. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 2.全局防护Bypass之UrlDecode

    0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.遇到这种情况 ...

  7. 16g u盘变 成1g u盘 解决方案,使用驱动器中的光盘之前需要将其格式化

    1\ 计算机----管理------磁盘管理  有一个黑色区域是未分配的 2\ 1)进入cmd 命令行窗口2)输入 diskpart,并回车.弹出系统提示,选是即可.3)输入 list disk,并回 ...

  8. 浏览器自动化工具-Selenium

    Table of Contents 1. 什么是Selenium 2. 简单的例子 3. PS 什么是Selenium Selenium可以自动化操作浏览器,利用Selenium可以模拟用户操作,因此 ...

  9. tcpdump常用命令

    1. 只抓syn包 tcpdump -i eth1 'tcp[tcpflags] = tcp-syn' 2. 只抓ack包 tcpdump -nni xgbe1 dst host 191.168.10 ...

  10. 使用app loader上传iOS应用

    正如上篇文章中提到的,因为一些原因我尝试通过app loader打包上传应用到appStore  其实这个使用还是挺简单 的 首先要知道怎么打开loader 打开方式有两种  一种是直接打开loade ...