•Gateway入口
◦一个封装了对外部系统或资源访问的对象.
◾OO系统中,也需要访问一些不是对象的事物,DB表,XML,事务.
◾这些外部资源的API很复杂.
◾入口类对象将简单的方法调用转换成相应的特定API.
◦运行机制
◾本质上是简单的包装器模式.
◾封装外部资源,创建一个简单的API,并用入口将对该API的调用转移到外部资源上.
◾它可以作为使用服务桩的极佳位置.
◾应尽可能保持入口简单.复杂的逻辑应该放在入口的客户中.
◾有时需要多个对象来构造入口
◾常见的:一个后端,一个前端.
◾后端封装对外部资源操作的代码,但并不简化其API.
◾前端将复杂API转换为对APP可用的,更为简单的操作.
◾当从外部服务到客户所需的形式的适配很复杂时使用.
◾反之,如果对外部服务的封装工作很简单时,一个类完成封装和适配即可.
◦使用时机
◾如果必须通过一个复杂的接口与位于系统之外的事务交互时,可以考虑
◾入口将复杂性封装起来.提高了入口之外的代码的可读性.
◾入口使系统更易于测试.
◾使得用一种资源替代另一种资源变得更加容易.简单而高效的变更保护形式.
◾对比外观模式
◾入口是客户方为了其特定应用而编写的.外观是由服务的作者提供.
◾外观通常暗示一个与原始接口不同的接口.而入口很可能是为了测试或替换资源目的而简单的照搬被包装的接口.
◾对比适配器模式
◾适配器修改一个已实现的接口,使其与另一个接口相匹配.
◾入口模式中,没有一个已存在的接口.
◾对比调停者模式
◾调停者用来将多个对象解耦,使它们无需互相引用,而只需与调停者发生关联.
◾入口模式中通常只涉及两个对象.且被包装资源并不知道入口的存在.
◾通常在创建入口时将其保存在一个公共的位置,来保证其他类能定位它.可以使用静态类.