网关
封装对外部系统或资源访问的对象。
有关完整描述,请参见 EAA 模式 第 466 页
有趣的软件很少孤立存在。即使是最纯粹的面向对象系统也经常需要处理非对象的东西,例如关系数据库表、CICS 事务和 XML 数据结构。
访问此类外部资源时,通常会获得它们的 API。但是,这些 API 自然会比较复杂,因为它们会考虑资源的性质。任何需要了解资源的人都需要了解其 API - 无论是关系数据库的 JDBC 和 SQL,还是 XML 的 W3C 或 JDOM。这不仅使软件更难理解,而且如果将来将某些数据从关系数据库转移到 XML 消息,也会使更改变得更加困难。
答案是如此普遍,以至于几乎不值得说出来。将所有特殊 API 代码包装到一个类中,该类的接口看起来像一个普通对象。其他对象通过此网关访问资源,该网关将简单的函数调用转换为相应的专用 API。