适配器(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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值