- 意图:
将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
- 构成:
- 目标抽象角色(Target):定义客户要用的特定领域的接口。
- 适配器(Adapter):调用另一个接口,作为一个转换器。
- 适配器(Adaptee):被适配的对象,定义一个接口,Adapter需要接入。
- 客户端(Client):协同对象符合Adapter适配器。
- 两种类型的适配器模式:
- 类适配器(采取继承的方式)
- 对象适配器(采取对象组合的方式)
- 缺省的适配器模式(AWT,Swing时间模型所采用的模式.
tips1: 匿名内部类会隐式的继承或实现父类或者接口。
tips2: 一个接口定义的抽象方法过多,子类中又用不到这么多方法,就需要一个过渡,但是这个过渡类又不希望被直接使用,所以将此过度类定义为抽象类最合适,即一个接口被抽象类先实现(适配器类),并在此抽象类中实现若干方法(方法体为空),则以后的子类直接集成此抽象类,就可以定义所需要的方法。
- 适用性:
- 对象需要利用现存的并且接口不兼容的类。
- 需要创建可重用的类以协调其他接口可能不兼容的类。
- 类适配器实例:
在runBare方法中,通过runTest方法将我们自己编写的testXXX方法进行了适配,使得JUnit可以执行我们编写的TestCase。
Git Adapter code1
Git Adapter code2
Git Adapter code3