设计模式之禅学习——适配器模式
m git : https://github.com/hejiawang
1、适配器模式就是将一个类的接口变成客户端所期待的另一种接口,使客户端能够使用原来因为接口不匹配所导致不能用的接口。
好像变压器,像我们的手机电脑,不能直接使用220V的电压,那么通过变压器就能降低电压,使原 来不能使用的电压现在变得能够使用。这个变压器就是一个适配。
下图中,原本A和C是不能够在一起,通过B的适配,AC终成眷属了。。。。
2、下面看看适配器模式的代码:
需要适配的角色,就像上面图中的A。。
package com.wang.adapterPattern;
/**
* 适配器模式 </br> 目标角色
*
* @author wang
*
*/
public interface Target {
/**
* 目标角色自己的方法
*/
public void request();
}
它的实现类
package com.wang.adapterPattern;
/**
* 目标角色实现类
*
* @author wang
*
*/
public class ConcreteTarget implements Target {
@Override
public void request() {
System.out.println("ConcreteTarget");
}
}
适配的原角色,就像上图中的C。。
package com.wang.adapterPattern;
/**
* 适配的源角色
*
* @author wang
*
*/
public class Adaptee {
/**
* 源角色的方法
*/
public void doSomething() {
System.out.println("Adaptee");
}
}
适配器角色,也就是上图中的B了。。
package com.wang.adapterPattern;
/**
* 适配器角色
*
* @author wang
*
*/
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
super.doSomething();
}
}
客户端使用情况:
package com.wang.adapterPattern;
public class APP {
public static void main(String[] args) {
Target target = new ConcreteTarget();
target.request();
/**
* 适配其他的角色
*/
Target targetAdapter = new Adapter();
targetAdapter.request();
}
}
3、适配器的使用情况很好判断,比如,系统扩展了,需要使用一个已经或新建的类,但是这个类又不符合系统的接口,咋办呢。。。。适配呗。。。中间添加个适配器,搞定。。。。。