适配器模式

1、什么是适配器

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。举个例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

优点:

(1)、可以让任何两个没有关联的类一起运行。

(2)、提高了类的复用。

(3)、增加了类的透明度。

(4)、灵活性好。

缺点:

(1)、过多地使用适配器,会让系统非常零乱。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,因此如果不是很有必要,不使用适配器。

(2)、由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

2、适配器模式中的角色分析

目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。

需要适配的类(Adaptee):需要适配的类或适配者类。

适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

3、实现方式

(1)、类适配器(采用继承实现)

(2)、对象适配器(采用对象组合方式实现)

4、代码实现

继承方式:

public class Phone {
    //充电
    public void charging(Voltage5V voltage5V){
        if(voltage5V.output5v() == 5){
            System.out.println("电压为5v,可以使用");
        }else {
            System.out.println("电压过大 不允许使用");
        }
    }
}

public class Voltage220V {
    public int output220v(){
        int src = 220;
        System.out.println("输出220V");
        return src;
    }
}

public interface Voltage5V {
    public int output5v();
}

public class Voltage5VAdapter extends Voltage220V implements Voltage5V{
    @Override
    public int output5v() {
        int src = output220v();
        int dst = src / 44;
        return dst;
    }
}

public class Test {
    public static void main(String[] args) {
        Phone phone = new Phone();
        phone.charging(new Voltage5VAdapter());
    }
}

对象组合方式

public class Voltage220V {
    public int output220v(){
        int src = 220;
        System.out.println("输出220V");
        return src;
    }
}

public interface Voltage5V {
    public int output5v();
}

public class Voltage5VAdapter implements Voltage5V {
    private Voltage220V voltage220V;
    public Voltage5VAdapter(Voltage220V voltage220V) {
        this.voltage220V = voltage220V;
    }
    @Override
    public int output5v() {
        if(null != voltage220V){
            int src = voltage220V.output220v();
            int dst = src / 44;
            return dst;
        }else {
            return 0;
        }
    }
}

5、适配器模式在SpringMVC中的应用

(1)、Spring 定义了一个适配接口,使得每一种conroller有一种对应的适配器实现类。

(2)、适配器代替controller 执行相应的方法。

(3)、扩展controller 时,只需要增加一个适配器类就完成了SpringMVC 的扩展。

路过的朋友们,帮忙点个赞。[玫瑰][玫瑰]

展开阅读全文

页面更新:2024-04-14

标签:适配器   模式   组合   读卡器   电压   接口   对象   玫瑰   目标   方式

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top