前言
当客户的调用方法和提供服务的方法不太一致的时候,可以使用适配器模式
3.1 类适配器
不改变现存代码
现存的服务Class1的Method1
现存的客户Interface1的Method2
创建新的类NewClass,继承Class1和Interface1
在NewClass的Method2,调用Method1
3.2 对象适配器
有时接口不是Interface而是一个类时,就要用对象适配器
对象适配器利用委托(方法重写)
现存的服务Class1的Method1
现存的客户Class2的Method2
创建新的类NewClass,继承Class2
在内部保存Class1的对象
在NewClass的Method2,Class1的对象调用Method1
类适配器:扩展一个类,继承一个接口
对象适配器:继承一个类,他的风险是,不能或不可以重写全部的方法
3.3 为Jtable适配数据(一个典型的例子)
Jtable是一个画表格的组件,他并不知道具体的数据,传统的方式是定义一个复杂的数据结构,由数据提供者填写该数据结构
而Jtable利用了对象适配器,
现存的服务数据提供者
现存的客户JTable
使用方法:
创建一个新类(NewClass),继承AbstractTableModel类
该类保有数据提供者的对象(可以是复数个)(可利用构造器传入)
重写AbstractTableModel的方法,填充数据
使用的时候,将NewClass的对象作为参数传递给Jtable的启动方法
该启动方法的参数是(AbstractTableModel)