![这里写图片描述](https://img-blog.csdn.net/20170803140859050?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHV6aGloYWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
适配器模式就是把一个不能使用的对象转换成一个可以使用的对象,使得系统适应不同的场景。
这里的例子是:电脑要通过三项插头充电,但现在只有一个二项插头,所以要new 一个适配器,将二项插头转化成三项插头,从而使得电脑正常充电。
在适配器类中加入 二项插头的对象, 方便对其进行转化。 当然实现适配器有继承和组合两种方式,但我们毫无疑问是采用组合的方式实现适配器,组合可以灵活使用,方便适应未来的需求。
三项插头接口(ThreePlug)
public interface ThreePlug{
void work();
}
三项插头接口实现(ThreePlugImpl )
public class ThreePlugImpl implements ThreePlug {
@Override
public void work() {
System.out.println("三项插座在工作中...");
}
}
二项插头接口(TwoPlug)
public interface TwoPlug {
void work();
}
二项插头接口实现(TwoPlugImpl )
public class TwoPlugImpl implements TwoPlug {
@Override
public void work() {
System.out.println("二项插座在工作中..");
}
}
电脑类(Computer)
public class Computer{
private ThreePlug threePlug;
public Computer(ThreePlug threePlug) {
this.threePlug = threePlug;
}
public void charge() {
threePlug.work();
System.out.println("电脑在充电");
}
}
适配器(Adapter 实现 ThreePlug 接口)
public class Adapter implements ThreePlug {
private TwoPlug twoPlug;
public Adapter(TwoPlug twoPlug) {
this.twoPlug = twoPlug;
}
@Override
public void work() {
System.out.println("适配器工作中..");
twoPlug.work();
}
}
测试类(Test )
public class Test {
public static void main(String[] args) {
ThreePlug threePlug = new ThreePlugImpl();
Computer computer = new Computer(threePlug);
computer.charge();
}
}
控制台输出
1.正常调用三项插头充电
三项插座在工作中…
电脑在充电
2.调用适配器,利用二项插头充电
适配器工作中..
二项插座在工作中..
电脑在充电
![这里写图片描述](https://img-blog.csdn.net/20170803140926010?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHV6aGloYWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)