适配器用于让两个无关的类之间产生联系,可以一起协同工作。
就拿小米 6手机为例子,它没有圆孔来让耳机插入,就只有一个方孔,那我们怎么插耳机呢?小米手机提供了一个转接口来帮我们干这件事,耳机本来就可以插圆孔但是不能插方孔,转接头既可以插圆孔也可以插方孔。这就使得本来耳机不能插入手机,通过一个转接口可以实现这个功能。这个转接口其实就是一个适配器,它让耳机和手机本来不可以通信的两个事物之间产生了关系。
类的适配器模式
这个通过继承实现的,不推荐大家使用。
对象的适配器模式
这个是通过实现接口实现的,我下面的代码演示就是使用的这种形式。(推荐使用)
在面向对象的编程中,我们推荐使用组合/聚合,而不是去使用继承。
实际编码中不推荐大家使用中文命名类名,我这里是为了方便大家理解才使用的,
适配器类
interface USB{
void 插圆孔();
void 插方孔();
}
class 耳机{
public void 插圆孔(){
System.out.println("耳机 插进圆孔了");
}
}
public class Adapter implements USB{
private 耳机 ear;
public Adapter(耳机 ear){
this.ear = ear;
}
@Override
public void 插圆孔() {
ear.插圆孔();
}
@Override
public void 插方孔() {
System.out.println("Adapter 插进方孔了");
}
}
测试类
public class Test {
public static void main(String[] args) {
Adapter adapter = new Adapter(new 耳机());
adapter.插圆孔();
adapter.插方孔();
System.out.println("可以听歌了");
}
}
过多的使用适配器,会让系统非常零乱,不易整体进行把握。
我只是把主要的思想给大家讲解了,真正要使用好适配器模式还是需要大家自己去理解和体会。比如在看源码的过程中就可以自己去体会那样设计的好处,码农和大牛之间的差距可能就是在思想上的高度。大牛在不断的体会设计,去想好的设计。码农去不停的重复 CRUD。当然我是个菜鸟,这只是我的感想罢了,但我相信有一天我可以达到心中的高度。
参考博文链接:https://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html