大白话 设计模式之适配器模式

定义

适配器模式(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,其实再牛逼的设计模式,也是一点点演进出来的,我们不要被一些专有名词吓到,用你自己的方式去理解就好!

posted @ 2016-02-19 21:36  ligang7560  阅读(302)  评论(0编辑  收藏  举报