适配器模式可以提高我们的开发效率,比如我们常见的LIstView、GridView和RecyclerView都需要使用Adapter。他就像一个粘合剂,将两个不兼容的类融合到一起。
把一个类的接口变成客户端所期待的另一个接口,使本来不不匹配二无法再一起工作的类可以在一起工作。
1)系统需要使用现有的类,而类的接口不符合要求 2)需要建立一个可以重复使用的类,用于一些彼此之间没有太大关联的类 3)需要一个统一的接口,而输入类型不确定
适配器模式分为两种类型:类适配器模式和对象适配器模式。 类适配器模式:通过继承adaptee类来实现 Interface(operation1)——->adapter(operation1)<——-adaptee(opteration2) 对象适配器模式:通过构造adaptee的实例来实现 Interface(operation1)——->adapter(operation1)<——-adaptee(opteration2)
类适配器模式
/**
* Created by libin on 16/11/17.
* target
*/
public interface FiveVolt {
int getFiveVole();
}
/**
* Created by libin on 16/11/17.
* adaptee
*/
public class Volt220 {
public int getVolt220(){
return 220;
}
}
/**
* Created by libin on 16/11/17.
* 类适配器模式
* adapter
*/
public class Class_adapter extends Volt220 implements FiveVolt{
@Override
public int getFiveVole() {
return 5;
}
}
对象适配器
/**
* Created by libin on 16/11/17.
* Targeet
*/
public interface FiveVolt {
int getFiveVole();
}
/**
* Created by libin on 16/11/17.
* adaptee
*/
public class Volt220 {
public int getVolt220(){
return 220;
}
}
/**
* Created by libin on 16/11/17.
* 对象适配器模式
* adapter
*/
public class Target_adapter implements FiveVolt{
Volt220 volt220;
public Target_adapter(Volt220 mVolt220) {
volt220 = mVolt220;
}
public int getVolt220() {
return volt220.getVolt220();
}
@Override
public int getFiveVole() {
return 5;
}
}
该项目github源码:https://github.com/libin7278/DesignModle