入口是一个封装外部系统或资源访问的对象
背景
即使是纯粹的面向对象系统,通常也要处理一些不是对象的事务,例如关系数据库、CICS事务和XML数据结构。
问题
一般通过API访问外部资源。对API的理解是开发过程的必经之路,不仅软件的可读性差,使软件修改变也变得困难。
解决途径
将所有API代码封装到一个类中,其他对象通过这个入口访问资源,入口对象将方法的调用转换成特定API。
运行机制
- 入口的重要用途之一是它可以使用服务桩模式;
- 入口在完成以下基本功能的前提下最小化:适配外部服务、提供一个设置服务桩的良好位置。
- 代码自动生成入口。可以使用关系元数据创建一个关系表的包装器类,或采用XML模式生成入口代码。
- 需要多个对象构造入口。一般使用两个对象:前端和后端,前端转化资源API为应用可用的操作,后端封装对资源操作的代码,但没有简化API。
使用时机
- 如果必须通过一个复杂的接口访问外部资源,应该考虑入口模式。
- 通过为服务桩部署提供一个清晰的位置,入口模式使系统更容易测试。
- 如果有多个子系统,也可以采用映射器模式,但映射器模式比入口模式复杂。
- 入口模式使客户方开发的,而其他模式,如外观模式则是服务方提供的。
- 入口模式没有事先已存在的接口,而例如适配器模式则是对已有接口的修改完成。
- 调停者模式通常用来对多个对象解耦,使其无需相互引用,入口模式通常只涉及到两个对象。