适配器模式 (Adapter Pattern)

《设计模式的艺术》 刘伟 著 读书笔记

例子:你的伙伴已经根据接口

public interface Algorithms {
    void sort(int[] arr);
}

编程了,你找到了一个高效的sort方法,但你没有源代码,只知道方法名和参数列表。

public void quickSort(int[] array){
    ...
}

这时候就需要适配器了



public interface Algorithms {
    void sort(int[] arr);
}

public class MyAlgorithms {
    public void quickSort(int[] arr){

    }
}

public class Adapter implements Algorithms {
    @Override
    public void sort(int[] arr) {
        MyAlgorithms myAlgorithms=new MyAlgorithms();
        myAlgorithms.quickSort(arr);
    }
}

这里写图片描述

当client类已经对接口Algorithms开始编程,而你想重用MyAlgorithms方法(没有源代码,不能copy),不想再实现一次的话,就加入一个适配器Adapter


拓展的还有双向适配器,缺省适配器(当不需要实现一个接口的所有方法,可先设计一个抽象类实现该接口,并提供默认实现,子类可选择性地覆盖父类某些方法来实现需求。这也成为单接口适配器模式)


该设计模式适用场景:

  1. 系统需要使用一些现有的类,而这些类的接口(例如方法名)不符合系统的需求,甚至没有这些类的源代码。
  2. 想创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的类,包括一些可能在将来引进的类一起工作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值