设计模式之适配器模式

来源:互联网 发布:电信宽带免费提速软件 编辑:程序博客网 时间:2024/06/13 12:23

这里写图片描述

适配器模式就是把一个不能使用的对象转换成一个可以使用的对象,使得系统适应不同的场景。

这里的例子是:电脑要通过三项插头充电,但现在只有一个二项插头,所以要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() {        // TODO Auto-generated method stub        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) {        //1.正常调用三项插头充电        ThreePlug threePlug = new ThreePlugImpl();        Computer computer = new Computer(threePlug);        computer.charge();          //2.调用适配器,利用二项插头充电        /*TwoPlug twoPlug = new TwoPlugImpl();        Adapter adapter = new Adapter(twoPlug);        Computer computer = new Computer(adapter);        computer.charge();*/        }}

控制台输出

1.正常调用三项插头充电

三项插座在工作中…

电脑在充电

2.调用适配器,利用二项插头充电

适配器工作中..

二项插座在工作中..

电脑在充电

这里写图片描述