美文网首页程序员
白话讲适配器模式

白话讲适配器模式

作者: jiajun_geek | 来源:发表于2017-06-07 16:08 被阅读87次

肥宅很喜欢听音乐,有一天他在湖边一边听音乐一边踩单车,听得正嗨,一不小心旁边有个人穿过,肥宅一个刹车,结果自己用了多年的肾5掉进湖里了。肥宅赶紧捞起自己的肾5,发现已经用不了,肥宅这下心疼死了。
过了几天,肾7出了,肥宅忍一忍,用自己存了很久的钱买了台肾7。肥宅并没了解过肾7有什么改变,结果想用自己以前的耳机,发现居然肾7没有耳机圆孔,这下怎么办,怎么插下去。肥宅赶紧找手机店的老板,沟通一番,原来肾7没有耳机孔了,这下怎么办,两个口不匹配,这下怎么办,原来苹果出了一个转换器,买一个转换器就可以听歌了,肥宅无奈之下,又花钱买了一个转换器。

没有耳机圆孔的iphone7

只能插入到圆孔的耳机

有线耳机听歌需要经过lightning口

新出的适配器

好了,讲了一长段故事,其实重点讲的就是适配器模式。当接口不匹配的时候怎么办,耳机口和lightning口不匹配,于是适配器出现了,可以插入lightning口,又有耳机插入的圆孔(实现了旧接口,又组合了新接口),适配器模式讲的就是这个意思。下面看看代码。


public class IPhone7 {
    //iphone7有lightning口,没有听歌用的圆孔
    public Lightning lightning;
    public void setLightning(Lightning lightning)
    {
        this.lightning=lightning;
    }
    //听歌只能用lightning口
    public void listenMusic()
    {
        lightning.listenMusic();
    }
}
//要听歌除了无线必需要必须用lightning
public interface Lightning {
    void listenMusic();
}
//耳机圆孔
public interface Circle {
    void listenMusic();
}
//耳机插入到圆孔就能听歌
public class Earphone implements Circle{

    @Override
    public void listenMusic() {
        // TODO 自动生成的方法存根
        System.out.println("肥宅用圆孔耳机听歌");
    }

}
//适配器实现了lightning口,可以插入到lightning口
public class Adapter implements Lightning{
    //同时有耳机圆孔
    public Circle circle;
    public Adapter(Circle circle)
    {
        this.circle=circle;
    }
    @Override
    public void listenMusic() {
        // TODO 自动生成的方法存根
        circle.listenMusic();
    }
    
}
public class 肥宅 {
    public static void main(String[] args) {
        //买了一个一台iphone7
        IPhone7 iphone=new IPhone7();
        //有一个插入到圆孔就可以听歌的旧耳机
        Circle circle=new Earphone();
        //买一个适配器,适配器上插上耳机
        Adapter adpter=new Adapter(circle);
        //在lightning口上插上买的适配器
        iphone.setLightning(adpter);
        //通过适配器实现了用lightning口听歌
        iphone.listenMusic();
    }
}

那么问题来了

适配器模式有点亡羊补牢的意思?

是的,我们一般不会刻意去使用适配器模式,适配器模式一般不会出现在设计阶段。

有没有在设计的时候就用适配器模式?

有的,当项目使用第三方接口的时候,我们没有必要根据他的接口去改变我们自己的接口,应用适配器就可以。

设计模式好像很少用到?

不要为了使用而使用,这样反而会过度设计,看哪种模式能帮助我们就行了,所以先了解设计模式,用到的时候才不会方恨少。

[这是我在博客园上的博客]http://www.cnblogs.com/-new/)

我觉得分享是一种精神,分享是我的乐趣所在,不是说我觉得我讲得一定是对的,我讲得可能很多是不对的,但是我希望我讲的东西是我人生的体验和思考,是给很多人反思,也许给你一秒钟、半秒钟,哪怕说一句话有点道理,引发自己内心的感触,这就是我最大的价值。(这是我喜欢的一句话,也是我写博客的初衷)

相关文章

  • 白话讲适配器模式

    肥宅很喜欢听音乐,有一天他在湖边一边听音乐一边踩单车,听得正嗨,一不小心旁边有个人穿过,肥宅一个刹车,结果自己用了...

  • Java设计模式(二)

    talk is cheap show me the code 适配器模式 类适配器模式 接口适配器模式 对象适配器...

  • 适配器模式

    目录 1、什么是适配器模式? 2、适配器模式结构? 3、如何实现适配器模式? 4、适配器模式的特点? 5、适配器模...

  • 设计模式之适配器模式

    适配器模式: 类适配器模式、对象适配器模式、接口适配器模式 1.类适配器模式:新的接口出现了,但是和老的接口不兼容...

  • 学习iOS设计模式第一章 适配器(Adapter)

    今天学习了iOS设计模式中的适配器模式,适配器有两种模式对象适配器模式-- 在这种适配器模式中,适配器容纳一个它包...

  • 第4章 结构型模式-适配器模式

    一、适配器模式简介 二、适配器模式的优点 三、适配器模式的实例

  • 设计模式(Design Patterns)适配器模式(Adapt

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 类的适配器模式 场景:将一个类转换成...

  • 适配器模式

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。适配器模式将某个类的接口转换成客户端期...

  • 适配器模式

    先直观感受下什么叫适配器 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。 类适配器模式 对象适配器模...

  • 适配器模式

    适配器模式 一、适配器模式定义 适配器模式的定义是,Convert the interface of a clas...

网友评论

    本文标题:白话讲适配器模式

    本文链接:https://www.haomeiwen.com/subject/xhcafxtx.html