首页 > 其他 > 详细

第七式 适配器模式

时间:2019-05-12 14:00:44      阅读:134      评论:0      收藏:0      [点我收藏+]

 适配器模式

生活中的适配器

  生活中适配器到处可见,我们大家使用的笔记本电脑的适配器,可以让我们在全世界使用,即使日本的交流电是110V而我国是220V。还有就是插头插座转换的适配器,当你的电器插头是3脚,而你家只有2孔插座,可以买一个3脚转2脚的适配器。

 

面向对象适配器

  假设有一个软件系统,你希望它能和一个新的厂商搭配使用,但是这个心厂商所涉及出来的接口,不同于旧厂商的接口:

  技术分享图片

  你不想改变现在有的代码,解决这个问题(而且也不想改变厂商的代码)。解决这个问题,可以写一个类,将厂商的接口转变成所期望的接口。

  技术分享图片

  这个适配器工作起来就如同一个中间人,它将客户所发出的请求转换成厂商类能理解的请求。

  技术分享图片

 

 

 什么是适配器模式

  适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。

  类图:

   技术分享图片

   

   这个适配器模式充满着良好的OO设计原则:使用对象组合,以修改的接口包装被设配者:这种做法还有额外的优点,那就是,被适配者的任何子类,都可以搭配着适配器使用。

 

 代码

  现在NBA季后赛激战正酣,昨天火箭被勇士淘汰。以后姚明在火箭的时候就关注上火箭了。为什么说这个呢,姚明是我们的骄傲,他02年以状元秀进入NBA时,是不会英文的,虽然之后他的英文666,,但当时他怎么跟教练队友交流呢?答案是球队给他配备了一个翻译,那个翻译就是适配器,这种解决方案就是适配器模式。我们用代码模拟一下这个过程

 

/**
 * NBA球员接口
 */
public interface Player {
    public void talk();
}

 

  

public class Kobe implements Player {
    public void talk() {
        System.out.println("I say English");
    }
}

 

 

public class Yao {
    public void say(){
        System.out.println("我说中文");
    }
}

 

 

/**
 * 姚明的翻译者
 */
public class Translator implements Player {
    private Yao yao;

    public Translator(Yao yao){
        this.yao=yao;
    }

    public void talk() {
        yao.say();
        System.out.println("translate to english");
    }
}

 

 

    /**
     * 客户端调用,模拟跟教练交流;科比可以说英文可以跟教练自由沟通
     * 姚明需要通过翻译
     */
    public static void main(String[] args){
        Kobe kobe = new Kobe();
        Yao yao = new Yao();
        Translator translator = new Translator(yao);
        kobe.talk();
        translator.talk();
    }

 

第七式 适配器模式

原文:https://www.cnblogs.com/bwyhhx2018/p/10852033.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!