WEB开发网
开发学院软件开发Java 基于模式的体系结构设计与开发: 第 1 部分:使用设... 阅读

基于模式的体系结构设计与开发: 第 1 部分:使用设计模式

 2010-01-22 00:00:00 来源:WEB开发网   
核心提示: 在此方案中,系统将从一个接口到另一个接口的转换任务委派给特定适配器,基于模式的体系结构设计与开发: 第 1 部分:使用设计模式(6),不过,此方法也有自己的优点和缺点,将实例化步骤延迟到了子类中,图 4 显示了如何最好地使用此设计模式,优点通过引入适配器来在应用程序接口和订票系统接口之间进行转换

在此方案中,系统将从一个接口到另一个接口的转换任务委派给特定适配器。不过,此方法也有自己的优点和缺点。

优点

通过引入适配器来在应用程序接口和订票系统接口之间进行转换,订票系统接口中的变更影响得到了局部化。“适配器”设计模式为客户机提供了方便机制,无需进行任何修改就可使用接口与客户机预期接口不同的对象。此设计模式允许之前由于接口不兼容而无法一起工作的各个类一起工作。

缺点

使用此方法也有一些缺点:

系统仍然必须确定使用哪个适配器实例。

适配器向与订票系统进行通信所需的通信协议公开。

“适配器”模式的缺点引出了我们的下一个设计模式。为了让系统独立于运行时使用的适配器实例,可以实现“工厂”设计模式。

使用更多设计模式予以改善后的解决方案:适配器工厂

“工厂”设计模式定义运行时用于创建对象的接口,但让其子类决定实例化哪个类。也就是说,将实例化步骤延迟到了子类中。图 4 显示了如何最好地使用此设计模式。


图 4. 用于选择正确适配器的工厂
基于模式的体系结构设计与开发: 第 1 部分:使用设计模式

清单 3 显示了“工厂”设计模式的用法。


清单 3. TicketBooker 类使用 AdapterFactory 获取与遗留系统通信的正确适配器
public class TicketBooker {  
  private String legacySystemName; 
  public TicketBooker(String legacySystemName){ 
    this.legacySystemName = legacySystemName; 
  } 
   
  public boolean bookTicket(Itinerary i) {     
    // Use the Factory to get the right Adapter 
    // Then use the Adapter to communicate with the legacy system     
    IAdapter adapter = AdapterFactory.getAdapter(legacySystemName); 
    adapter.bookTicket(i);     
    return true; 
  }   
} 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:基于 模式 体系结构

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接