企业应用架构的基本模式之入口模式

本篇介绍企业应用架构的基本模式之一入口(Gateway)模式。git

入口(Gateway)github

入口是一个封装外部系统或资源访问的对象。带来系统上的简单性,可测试性,使得依赖资源的替换变得更加容易。web

代码示例地址:https://github.com/tianyaxiang/ApplicationArchitecture数据库

背景微信

当访问外部资源时,一般要得到它们的API,但这些API可能具备自然的复杂性,由于它们必须考虑到资源自身的特性。任何要理解一个资源就必须首先通晓基API——不管是对关系数据库的JDBC,仍是针对XML的W3C和JDOM,皆是如此。这使得软件的可读性差,修改变得困难,例如未来的某时将关系数据库的一些数据转移到XML,解决这一问题可使用入口(Gateway)模式架构

作法app

事实上这是一个十分简单的包装器(wrapper)模式。封装外部资源,建立一个简单的API并用入口将对该API的调用转移到外部资源上。测试

使用场景spa

若是必须经过一个复杂的接口与可能位于系统以外的事务交互,应当考虑入口模式。使用入口将复杂性封装起来,而不要让复杂性蔓延到整个系统中,使用入口几乎没有什么弊端,同时又可使系统中入口类以外的代码可读性更高。有如下的好处:对象

使系统更易测试。

使你用一种资源来替换另外一种资源变得更为容易。

即便你认为资源不会发生任何变化,你仍然能够从使用入口模式所带来的简单性和可测试性中获益。

入口模式与外观模式(Facade)和适配器(Adpter)以及中介者模式(Mediator)的区别

  • 外观模式对较复杂的API进行简化,其一般由服务的做者提供,并且是经过的。入口则是客户方为了其特定应用而编写的。此外,一个外观一般暗示一个与原始接口不一样的接口,但在入口能够只是简单地照搬被包装的接口,这种入口用于未来替换资源或测试目的。
  • 适配器模式修改某一已经实现的接口,使其与另外一个你所用到的接口相匹配。入口模式一般没有一个已存在的接口,虽然你可能会使用一个适配器来将一个实现映射到一个入口类的接口上。此时适配器是入口类实现的一部分。
  • 中介者模式经过用来将多个对象解耦,使得它们无需互相引用,而只要与中介者发生关联。入口模式一般只涉及两个对象,并且被包装的资源并不知道入口的存在。

 

本文首发于我的微信公众号:webguan ;欢迎您的关注

相关文章
相关标签/搜索