美文网首页
学习笔记:设计模式之适配器模式

学习笔记:设计模式之适配器模式

作者: 大力papa | 来源:发表于2020-10-09 09:57 被阅读0次

本文仅供学习交流使用,侵权必删。
不作商业用途,转载请注明出处

WHAT 什么是适配器模式

适配器UML

适配器模式(Adapter Design Pattern)主要用于将不兼容的接口转换为系统兼容的接口。
简单来说就是解决接口不兼容的问题,能够有效避免过多的代码修改。
适配器主要利用继承(类适配器)和组合(对象适配器)方式,可以看做是一种补偿机制。为了弥补原来接口设计不当的问题,或者解决第三方接口接入导致不兼容问题

WHY 为什么使用适配器模式

  • 统一多个接口功能的时候,使用一个统一的接口作为适配器,封装原来到接口到适配器内部。利用多态特性客户端就可以遍历调用所有的接口功能,无需再抽取接口代码组合成新的接口提高代码复用性。
  • 需求变更导致原来接口需要依赖第三方接口的时候,利用适配器可以减少代码改动

HOW 适配器模式的实现(JAVA)

这里我们使用组合的方式实现适配器

场景:业务系统原来获取数据是从我们的数据中心获取的。因为业务变更的原因,数据获取需要从集团提供的接口获取数据,但集团接口跟我们原来提供给业务系统的数据接口不兼容。

  • 数据接口
import java.util.List;
/**
 * 数据接口类
 */
public interface IDataService {
    List getData();
}
  • 数据中心获取数据的接口实现类
import java.util.Arrays;
import java.util.List;

public class DataServiceImpl implements IDataService {
    @Override
    public List getData() {
        return Arrays.asList("data1", "data2", "data3");
    }
}
  • 集团提供的数据接口
import java.util.Arrays;
import java.util.List;

public class GroupDataService {

    public List getSalesData() {
        return Arrays.asList("group_1", "group_2", "group_3");
    }
}
  • 适配器
import java.util.List;

/**
 * 对象适配器
 */
public class GroupDataAdapter implements IDataService {

    private GroupDataService groupDataService;

    public GroupDataAdapter(GroupDataService libyDataService) {
        this.groupDataService = libyDataService;
    }

    @Override
    public List getData() {
        return groupDataService.getSalesData();
    }
}
  • 业务系统调用接口的服务
/**
 * 业务系统的服务
 */
public class BusinessService {

    private IDataService dataService;

    public BusinessService(IDataService dataService) {
        this.dataService = dataService;
    }

    public void getData() {
        dataService.getData().forEach(data -> {
            System.out.println(data);
        });
    }
}

持续更新...

相关文章

网友评论

      本文标题:学习笔记:设计模式之适配器模式

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