概念
适配器,我们最熟悉的就是笔记本电脑的适配器,用于转换我们笔记本的电压的,让原来不合乎我们的东西,经过适配器的转换,转变为适合我们的东西。适配器模式也是同样的道理,让原来不兼容的两个接口协同工作
实现
案例:自从家里养了只二哈,家里的鞋子就没有一双是完整的,明晚公司举行了一个年度晚会,就算不穿西装,也得穿得正正齐齐嘛,鞋子也得是个好的,晚上下班都已经10点多了,周围的门店也都关门了,找不到门店来买鞋,明早还要早点回去刚项目,这就让我着急死了,于是找包租婆寻求帮助。包租婆见我这么可怜,给了他儿子大胖的45码鞋子给我,可是我这个小脚只能穿得了42码的鞋子,这时候就需要一个鞋垫(适配器)进行解决。
首先定义一个要实现的目标接口:
/**
* 定义一个我们最终要实现的目标接口
*/
public interface Target {
//穿得进大码的鞋子
public void suitBig();
}
定义我的小脚类:
/**
* 定义一个被适配的类
* 小脚,唯一的属性为一个最大能穿的进的码数
*/
public class SmallFoot {
//定义一个最大能穿的进的码数
private int maxSize = 42;
//返回能接受的最大码数
public int getMaxSize() {
System.out.println("我的小脚最大能接受的码数为:" + this.maxSize);
return maxSize;
}
}
定义一个鞋垫的类,就是适配器:
/**
* 定义一个鞋垫,能让我的小脚穿得进大码的鞋子
* 鞋垫需要继承小脚的类,并且实现目标接口
*/
public class Insole extends SmallFoot implements Target{
//使小脚实现穿45码的鞋子
@Override
public void suitBig() {
int size = getMaxSize();
size += 3;
System.out.println("我现在能穿" + size + "码的鞋子了!");
}
}
测试:
/**
* 实现
*/
public class People {
public static void main(String[] args) {
Target man = new Insole();
man.suitBig();
}
}
实验结果:
优点:可以让任何两个没有关联的类一起运行,复用已有的类,使已有的类通过适配器模式来适应目标环境,低耦合,不用对原有的代码进行修改,遵循开闭原则
缺点:使用的适配器过多,会导致系统十分复杂,代码可读性较低,难以维护
本文的代码:https://pan.baidu.com/s/1Q5VTNBIX6H25oqitwz7rCw
提取码:90ql