前言

  前面我们学习了创建型设计模式,其中有5中,个人感觉比较重要的是工厂方法模式、单例模式、原型模式。接下来我将分享的是结构型模式!

1.1、适配器模式概述

  适配器模式(Adapter)属于结构型设计模式,它的作用如同它的名字一样,用于转换接口。像我们的手机、电脑的电源适配器一样,适配器模式可以使彼此不兼容的代码间优雅地协作。

  适配器模式将某个类的接口转换成客户端(用户)期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式

    OOAD-设计模式(四)结构型模式之适配器、装饰器、代理模式

  1)角色及职责

     目标接口: Target,即我们想用适配器转换过去的新的目标接口。

     被适配者: Adaptee,适配器应用的对象。

     适配器: Adapter,转换接口的类

  2)适用场景  

    大多数情况下适配器模式会用在这两个场景下:

       系统中历史遗留的代码与新的代码之间的兼容处理,用于将旧的接口转换为新的接口,使得新的代码与旧的代码能够愉快地玩耍。

      有两个或者多个系统或者模块存在不兼容的接口,用于将各个模块或系统间互不兼容的接口转换为通用的接口,使得它们愉快地合作。   

1.2、类的适配器模式   

  核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口是Targetable,通过Adapter类,将Source的功能扩展到Targetable里。

    public class Source {  
        public void method1() {  
            System.out.println("this is original method!");  
        }  
    } 
    public interface Targetable {  

        /* 与原类中的方法相同 */  
        public void method1();  

        /* 新的方法 */  
        public void method2();  
    }  

    //类Source和接口Targetable因为不兼容,导致不能在一起工作
    //适配器Adapter则可以在不改变源代码的基础上解决这个问题
    //这样Targetable接口的实现类Adapter的对象即使Targetable类型,也能访问到Source中的方法
    public class Adapter extends Source implements Targetable {  
        public void method2() {  
            System.out.println("this is the targetable method!");  
        }  
    } 

    //测试类  这样Targetable接口的实现类就具有了Source类的功能。
    public class AdapterTest {  
        public static void main(String[] args) {  
            Targetable target = new Adapter();  
            target.method1();  
            target.method2();  
        }  
    }  
类的适配器模式

相关文章: