我是靠谱客的博主 震动菠萝,最近开发中收集的这篇文章主要介绍适配器模式---代码实现,类图,电流转换实例-----Nothing适配器模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

适配器模式

定义:

将一个类的接口转换成客户期望的另一个接口,使原本接口不兼容的类可以一起工作。

类型:

结构型。

适用场景:

已经存在的类,它的方法和需求不匹配时(方法结果相同或相似)

不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品,不同厂家造成功能类似而接口不相同情况下的解决方案。

优点:

能提高类的透明性和复用,现有的类复用但不需要改变

目标类和适配器类解耦,提高程序扩展性。

符合开闭原则。

缺点:

适配器编写过程需要全面考虑可能会增加系统的复杂性。

增加了系统代码可读的难度。

扩展

对象适配器:符合组合复用原则,使用委托机制

类适配器:通过类继承

适配器模式VS外观模式

都是对现有的类和系统的封装

外观定义了新的接口在现有系统中提供了方便的入口,适配器复用原有的接口,使两个已有的接口协同工作。外观的粒度更大。

代码:

//类适配器
//接口
public interface Target {
    void request();
}
//接口实现类1
public class ConcreteTarget implements Target{
    @Override
    public void request() {
        System.out.println("具体的Target");
    }
}
//被适配者
public class Adaptee {
    public void AdapteeRequest(){
        System.out.println("被适配者的方法");
    }
}
//适配器实现类
public class Adapter extends Adaptee implements Target{
    @Override
    public void request() {
        super.AdapteeRequest();
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        Target target=new ConcreteTarget();
        target.request();
        Target adapterTarget=new Adapter();
        adapterTarget.request();
    }
}

//对象适配器,只有适配器实现类改变了,所以只把适配器实现类抛出来
public class Adapter implements Target {
    //这里不一样,可以对比一下。
    private Adaptee adaptee=new Adaptee();
    @Override
    public void request() {
        adaptee.AdapteeRequest();
    }
}


//220V交流电转5V直流电示例
public class AC220 {
    public int outputAC220V(){
        int output=220;
        System.out.println("220交流电");
        return output;
    }
}
//适配器接口
public interface DC5 {
    public int outputDC5();
}
//实现类
public class Adapter implements DC5 {
    private AC220 ac220 = new AC220();

    public int outputDC5() {
        int adapterInput=ac220.outputAC220V();
        //变压器
        int adapterOutput = adapterInput/44;
        System.out.println("转换为" + adapterOutput+"直流电");
        return adapterOutput;
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        DC5 dc5=new Adapter();
        dc5.outputDC5();
    }
}

类图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bmJw5lKv-1606560583915)(G:研究生课程第一学期高级软件设计photo�9 适配器模式image-20201128184609433.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NiWjouGp-1606560583926)(G:研究生课程第一学期高级软件设计photo�9 适配器模式image-20201128184530228.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0UwvgzN9-1606560583931)(G:研究生课程第一学期高级软件设计photo�9 适配器模式image-20201128184458041.png)]

最后

以上就是震动菠萝为你收集整理的适配器模式---代码实现,类图,电流转换实例-----Nothing适配器模式的全部内容,希望文章能够帮你解决适配器模式---代码实现,类图,电流转换实例-----Nothing适配器模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部