好长时间没写学习笔记了,由于前段时间一直在准备校招,现在offer也签了,基本定了下来,可以继续了,今天抽点时间继续学习设计模式,今天学习的是适配器模式;
- 设计模式学习笔记(一)之单例模式(Singleton)
- 设计模式学习笔记(二)之观察者模式(Observer)
- 设计模式学习笔记(三)装饰模式(Decorator)
- 设计模式学习笔记(四)之工厂模式(Factory)
- 设计模式学习笔记(五)之代理模式(Proxy)
- 设计模式学习笔记(六)之策略模式(Strategy)
适配器在我们生活也是经常听说的,最常见的就是电源适配器,
一:定义:
将一个类的接口换成客户端所期待的另一种接口,从而使原本的接口不匹配而无法在一起工作的两个类能够在一起工作;
二:接下来我们来看下适配器模式的类图
看上面的类图,就能很清晰的看出来,我们可以把Adaptee的原角色进行适配包装成一个Target接口,但是Adaptee与Target又是两个不一样的东西,该肿么办呢?此时Adapter就派上用场了,这个Adapter类,就可以与Adaptee有关系,还可以连接Target,通过这个中间类,Adaptee就可以与Target搞上关系了;
三:角色说明
- 目标角色(Target) :这是我们期待把其他类转换成的Target目标类,也是期待的接口类
- 适配器角色(Adapter):这是适配器模式中一个重要的角色,因为我们要去创建这个角色,去连接Adaptee与Target类
- 适配器源角色(Aaptee):这是源角色,我们要通过Adapter角色把来该源角色来进行包装成为Target角色
四:代码例子
目标角色
package com.jiangqq.adapter;
/**
* 目标角色(Target)</a>
* @author sky
* @time 2012/11/10
*/
public interface Target {
public void request();
}
适配器源角色
package com.jiangqq.adapter;
/**
* 适配器源角色(Adaptee)
* @author sky
* @time 2012/11/10
*/
public class Adaptee {
public void doPrint()
{
System.out.println("HI,我是源角色....");
}
}
适配器角色
package com.jiangqq.adapter;
/**
* 适配器角色(Adapter)</a>
* @author sky
* @time 2012/11/10
*/
public class Adapter extends Adaptee implements Target{
@Override
public void request() {
super.doPrint();
}
}
客户端测试代码
package com.jiangqq.adapter;
/**
* 适配器模式的Client测试类</a>
* @author sky
* @time 2012/11/10
*/
public class Client {
public static void main(String[] args) {
Target target=new Adapter();
target.request();
}
}
参考资料:《设计模式之禅》《大话设计模式》