首页 > 代码库 > 【结构型模式】《大话设计模式》——读后感 (12)在NBA我需要翻译?——适配器模式

【结构型模式】《大话设计模式》——读后感 (12)在NBA我需要翻译?——适配器模式

适配器模式:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能在一起工作的 那些类可以在一起工作了[DP]

UML类图:

技术分享

 

简单模拟一下代码:

//已存在的、具有特殊功能、但不符合我们既有的标准接口的类

package com.sjmx.adapter;

//已存在的、具有特殊功能、但不符合我们既有的标准接口的类
public class Adaptee {
    
    public void specificRequest() {
        System.out.println("被适配类具有 特殊功能...");
    }
    
}

新规范接口:

package com.sjmx.adapter;

//目标接口,或称为标准接口
public interface Target {
    public void request();
}

适配器类:

package com.sjmx.adapter;

//适配器类,直接关联被适配类,同时实现标准接口
public class Adapter implements Target {
    
    // 直接关联被适配类
    private Adaptee adaptee;
        
    // 可以通过构造函数传入具体需要适配的被适配类对象
    public Adapter (Adaptee adaptee) {
        this.adaptee = adaptee;
    }
    
    public void request() {
        // 这里是使用委托的方式完成特殊功能
        this.adaptee.specificRequest();
    }

}

客户端:

package com.sjmx.adapter;

public class Client {
    
    public static void main(String[] args) {
        
        // 使用特殊功能类,即适配类,
        // 需要先创建一个被适配类的对象作为参数
        Target adapter = new Adapter(new Adaptee());
        adapter.request();
    }
}

 

适配器模式属于创建型模式,主要是为了解决两个已有接口之间不匹配的问题,我不需要考虑这些接口是怎么样实现的,也不考虑它们各自会如何演化,我的这种方式不需要对两个独立设计的类中任一个进行重新设计,使它们协同工作。我觉得适配器模式应该是处于软件生命周期的末端,针对很多已经开发好的功能进行调用,因为不方便去重新定义接口。

 

【结构型模式】《大话设计模式》——读后感 (12)在NBA我需要翻译?——适配器模式