大白话 设计模式之适配器模式
定义
适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口
那通俗点来说,啥是适配器呢,大家都知道港版的iphone的充电器,是不能直接在内地使用的,需要一个转换器才能使用,那么这个转换器就是所谓的适配器.
那么适配器能够给我们带来什么好处呢?
使用港版iPhone的同学都知道,充电要用转换器,那么你转换器内部是怎么转换的吗?你不知道,你也不需要知道,不关心内部具体实现,那么不就达到了高人所说的解耦的目的了吗,不就对具体实现不产生依赖了吗,回头你出国玩了,外国的插线板又不一样了,那怎么办? 直接再整个能用的转换器不就完了吗?
这同样不就符合了OO的开闭原则吗?
下面,我们就结合充电器这个例子,来写一个适配器的demo,首先,我们抽象一个充电器的接口,这个接口有一个充电的方法,其他所有的充电器都是它的不同实现而已
public interface Charger {
void electricity();
}
内地的充电器:
public class inLandCharger implements Charger {
public void electricity() {
System.out.println("我正在使用内地的插座");
}
}
香港的充电器:
public class HKCharger {
public void diffElectricity() {
System.out.println("我在使用HK的插座");
}
}
大家看到香港的充电器和内地的充电器是不一样的,那么我们就需要一个适配器来帮忙转换:
public class adapter implements Charger {
public void electricity() {
new HKCharger().diffElectricity();
}
}
好了现在我们模拟使用一下:
public static void main(String[] args) {
//使用国行的同学是这样充电的
Charger charger = new inLandCharger();
charger.electricity();
//使用港版的同学是这样充电的
charger = new adapter();
charger.electricity();
}
结果:
我正在使用内地的插座
我在使用HK的插座
到这里,我们就写好了一个适配器的demo,其实再牛逼的设计模式,也是一点点演进出来的,我们不要被一些专有名词吓到,用你自己的方式去理解就好!