基于模式的体系结构设计与开发: 第 1 部分:使用设计模式
2010-01-22 00:00:00 来源:WEB开发网核心提示: 在图 2 的方案中,系统直接将请求转换为中央订票系统能理解的格式,基于模式的体系结构设计与开发: 第 1 部分:使用设计模式(5),不过,此方法有多个缺点,图 3. 通过适配器通信清单 2 显示了与清单 1 所示相同的 TicketBooker 类,但这次是通过适配器与遗留系统连接,包括: 应用
在图 2 的方案中,系统直接将请求转换为中央订票系统能理解的格式。不过,此方法有多个缺点,包括:
应用程序对接口的依赖性非常大。由于转换逻辑硬编码在接口中,中央订票系统的接口的任何更改都将直接影响前端应用程序。影响可能在单个模块中,也可能分布在多个模块中。
要扩展系统来与任意新订票系统通信将非常困难。同样,更改的影响可能仅限于单个模块中,也可能分布在多个模块中。
这是处理与遗留系统通信的常见方法。解决此问题的更好方法是,通过引入组件充当应用程序接口和订票系统之间的转换器(如下所述)来将接口变更的影响局部化。
使用设计模式创建解决方案:“适配器”设计模式
此部分说明如何使用设计模式解决问题。图 3 显示了如何将“适配器”设计模式作为我们示例的转换中间层应用。
图 3. 通过适配器通信
清单 2 显示了与清单 1 所示相同的 TicketBooker 类,但这次是通过适配器与遗留系统连接。TicketBooker 类所需要知道的全部内容就是 IRSAdapter 接口。
清单 2. TicketBooker 使用适配器与遗留系统通信public class TicketBooker {
public boolean bookTicket(Itinerary i) {
// Use the Adapter to communicate with the legacy system
IRSAdapter adapter = new IRSAdapter();
adapter.bookTicket(i);
return true;
}
}
更多精彩
赞助商链接