本篇介绍企业应用架构的基本模式之一入口(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)的区别
本文首发于我的微信公众号:webguan ;欢迎您的关注