zoukankan      html  css  js  c++  java
  • [设计模式]适配器模式

    1.适配器模式用来做什么?

      适配器模式就是为了解决当前客户需要某个格式的接口,而现有系统中并没有可以直接提供的接口,就例如美国的电器拿到中国来是不能直接使用的,需要使用电源适配器,再比如内存卡是不能直接插在电脑上读取的,而是需要通过一个读卡器连接电脑和内存卡,这就是适配器的存在模式。

      适配器就是为了解决现有接口和需求接口不匹配的模式,在现有接口中做一层适配,使得满足需求,对于现有代码可以直接复用或者比较少修改即可使用。

      

      图1 适配器的作用

    2.怎么实现适配器模式?

      适配器的实现方式有两种方式:类适配器、对象适配器

      类适配器是通过继承的方式,继承现有的类,然后实现需要的新的接口,类图如下:

        

          图2 通过继承的方式实现类适配器

    这种方式的代码实现如下:

    public class NowClass {
        
        public void powerA () {
            // do powerA
        }
    
        public void powerB () {
            // do powerB
        }
    }
    
    public interface WantClass {
        public void doublePowerA ();
    
    }
    
    public class Adapter extends NowClass implements WantClass{
    
        public void doublePowerA() {
            powerA();
            powerA();
        }
    }

      通过这种方式显示了不改动原有代码的情况下,满足了新的系统需求接口。

      对象适配器是通过组合的方式实现适配,适配器持有原有对象的引用,通过用调用对象的方法来实现适配;具体类图如下:

      

        图3 通过组合的方式实现适配器模式

       具体的代码实现如下:  

    public class NowClass {
        
        public void powerA () {
            // do powerA
        }
    
        public void powerB () {
            // do powerB
        }
    }
    
    public interface WantClass {
        public void doublePowerA ();
    
    }
    
    public class Adapter implements WantClass{
    
        private NowClass nowClass;
    
        public Adapter (NowClass nowClass) {
            this.nowClass = nowClass;
        }
    
        public void doublePowerA() {
            nowClass.powerA();
            nowClass.powerA();
        }
    }

    这就是适配器的两种方式。 

    3. 适配器模式定义

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

    4. 适配器模式使用场景(引自菜鸟教程:http://www.runoob.com/design-pattern/adapter-pattern.html)

      1、系统需要使用现有的类,而此类的接口不符合系统的需要。

      2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。

      3、通过接口转换,将一个类插入另一个类系中。(比如老虎和飞禽,现在多了一个飞虎,在不增加实体的需求下,增加一个适配器,在里面包容一个虎对象,实现飞的接口。)

    关于适配器模式文章推荐:

      设计模式(二) 三种适配器模式 总结和使用场景 https://blog.csdn.net/zxt0601/article/details/52848004

      适配器模式 | 菜鸟教程 http://www.runoob.com/design-pattern/adapter-pattern.html

      Java设计模式之《适配器模式》及应用场景 https://www.cnblogs.com/V1haoge/p/6479118.html

  • 相关阅读:
    手动去除桌面快捷方式的小箭头
    免费才是硬道理:简评几款非盈利截屏软件
    策划入门(二)如何写一个项目建议书
    解决Fiddler在IE7下不能拦截的问题
    使用Fiddler轻松下载Flash视频flv流媒体文件
    策划入门(一)什么样的创意是可行的
    EFS加密的一线生机-加密帐户被删的补救方法
    50条重要的C++学习建议
    策划入门(六)如何将模块变成现实
    Windows XP 的任务栏出现重复的工具栏的问题
  • 原文地址:https://www.cnblogs.com/zhuangmingnan/p/9440507.html
Copyright © 2011-2022 走看看