首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

适配器(adapter)形式

2012-10-17 
适配器(adapter)模式适配器模式的宗旨是:保留现有类提供的服务,向客户提供接口,使得原本接口不兼容而功能

适配器(adapter)模式
适配器模式的宗旨是:保留现有类提供的服务,向客户提供接口,使得原本接口不兼容而功能相同的类一起工作。客户提供接口让实现一些个功能,而我们已经有类实现了相同的功能,但是两者的接口是不兼容的。现在可以实现一个新的类,利用已有类的功能去实现客户所希望的功能。
  分为类适配与对象适配。
  类适配:新的类继承已有类而实现期望的接口:
  class NewClass extends SomeClass implements interface{};
  对象适配:新类继承客户所期望的类,而在内部组合已有的类,也就是将已有类作为自己的属性,利用已有类的方法实现所继承下来的方法。
  class NewClass extends ClientClass {
  SomeClass someClass;
  ...
  public void ClientMethod(...) {
  someClass.someMethod(...);
  ...
  }
  }
  忽然想起前不久看到的组合与继承。类适配用到了继承的方法,而对象适配呢用到了组合的方法。为什么对象适配不能用继承了,因为它已继承了ClientClass类,java不支持多重继承,所以不能再继承现有的类。那么直接都用类适配就行了嘛,考虑这样的情况,你需要用到很多(多于一个就行)现有类来实现功能,而这个时候是不能用继承的,可以将所有的这些类组合进新类里面来完成任务。
  对象适配的一个应用:JTable。需要实现自己的表格模型时,有一个TableModel接口,而通常是继承其下的一个AbstractTableModel类。实现自己的表格模型类需要提供getColumnCount(),getRowCount(),getValueAt(int, int)方法,可以利用现有的一些类,如存储从数据库查询的记录的ResultSet,利用ResultSet的方法实现这三个方法。
  class MyTableModel extends AbstractTableModel {
  private Result rs;
  ...
  public int getColumnCount() {
  ...
  rs.method();
  ...
  }
  ...getRowCount()...getValueAt(int, int)...
  }
  参考:java设计模式(adapter),java编程思想(组合继承),java核心技术(swing table)

热点排行