这篇文章开始总结结构型模式的第二种模式,适配器模式,适配器这个概念大家应该听到比较多,在使用各种ListView,RecycleView时适配器都是必要的,我们今天开始总结适配器模式的基本原理。
定义
适配器的核心思想就是将一个类中的某个接口转化为另一个新的类的访问接口,其可以实现新的功能也同时可以兼容老的接口里的业务逻辑。适配器模式分为类结构型模式和对象型结构模式,我会把两者的示例代码都举例说明。
结构
- 适配的接口 : 需要被兼容的接口
- 需要被适配的类 :提供被兼容接口的类
- 作为适配器的类 : 作为适配器,兼容老的接口,作为新的访问入口
类结构型模式代码示例
/**
* 类适配器模式
*/
public class MyTest{
public static void main(String[] args) throws CloneNotSupportedException {
System.out.println("开始适配器模式代码测试...");
Adapter adapter = new Adapter();
adapter.targetMethod();
}
/**
* 需要适配的目标接口
*/
interface Target{
void targetMethod();
}
/**
* 需要被适配的类
*/
static class Adaptee{
//需要被适配的对外的接口
public static void method(){
System.out.println("被适配的老业务已被调用...");
}
}
/**
* 适配的类,作为新的访问入口
*/
static class Adapter extends Adaptee implements Target{
/**
* 新的访问入口,兼容老的内容
*/
@Override
public void targetMethod() {
method();
}
}
}
类结构型模式写时只需两步
- 第一步:定义好新的兼容的接口
- 第二步:将适配器类继承被适配的类,并实现新的兼容接口方法
对象结构型模式
/**
* 对象适配器模式
*/
public class MyTest{
public static void main(String[] args) throws CloneNotSupportedException {
System.out.println("开始对象适配器模式代码测试...");
Adaptee adaptee = new Adaptee();
Adapter adapter = new Adapter(adaptee);
adapter.targetMethod();
}
/**
* 需要适配的目标接口
*/
interface Target{
void targetMethod();
}
/**
* 需要被适配的类
*/
static class Adaptee{
//需要被适配的对外的接口
public static void method(){
System.out.println("被适配的老业务已被调用...");
}
}
/**
* 适配的类,作为新的访问入口
*/
static class Adapter implements Target{
private Adaptee adaptee ;
/**
* 新的访问入口,兼容老的内容
*/
public Adapter(Adaptee adaptee){
this.adaptee = adaptee;
}
@Override
public void targetMethod() {
if(adaptee == null){
System.out.println("适配器参数错误...");
return;
}
adaptee.method();
}
}
}
对象型结构模式书写时需要3步
- 第一步:定义好新的兼容的接口
- 第二步:定义一个适配器类并实现兼容的接口
- 第三步:定义好一个可以传递被适配器类的实例对象的方式,可以写一个构造方法或定义一个普通方法
- 第四步:利用在适配器类中传递的被适配器的类的参数去执行旧的业务逻辑代码。
两者的对比
- 类结构型适配器在写的过程中需要适配器继承被适配的类,因此要求我们对被适配的类的结构要非常的了解
- 对象结构型适配器不需要我们继承被适配的类。只需要将其作为一个参数传入适配器,再进行代码的调用,这种方式比较简单,因此使用的也比较多。
今天的适配器模式就总结到这里啦,觉得对您有帮助记得点个赞~
网友评论