【设计模式】适配器模式

640 阅读3分钟

前言

适配器模式是一种常用的设计模式,它用于将一个类的接口转换成客户端希望的另一个接口。适配器模式可以让原本不兼容的接口之间进行协同工作,从而提高代码的复用性和灵活性。在本文中,我们将深入了解适配器模式的组成、类图、使用场景以及在 Android 中的应用。

组成

适配器模式由以下几个组成部分:

  • 目标接口(Target):客户端希望调用的接口,适配器模式将原始接口转换成目标接口,使得客户端可以使用目标接口来调用原始接口。

  • 原始接口(Adaptee):需要被转换的原始接口,它不兼容客户端的目标接口。

  • 适配器(Adapter):用于将原始接口转换成目标接口的适配器。

  • 客户端(Client):使用目标接口来调用原始接口的客户端。

类图

以下是适配器模式的经典类图:

image.png (图源 | 图解设计模式)

在以上类图中,Target 是客户端希望调用的目标接口,Adaptee 是需要被转换的原始接口,Adapter 是适配器,用于将原始接口转换成目标接口。

使用场景

适配器模式适用于以下场景:

  • 当客户端希望使用一个不兼容的接口时,可以使用适配器模式将原始接口转换成目标接口。、

  • 当需要重用一个现有的类,但是它的接口不符合客户端的需求时,可以使用适配器模式进行接口转换。

Android 中涉及到的适配器模式

在 Android 开发中,适配器模式广泛应用于 ListView、RecyclerView 等控件中。这些控件需要一个 Adapter 来提供数据源,并将数据显示在控件上。

例如,以下是一个简单的 ListView 和对应的适配器:

// ListView
ListView listView = findViewById(R.id.list_view);

// 数据源
List<String> dataList = new ArrayList<>();
dataList.add("Apple");
dataList.add("Banana");
dataList.add("Orange");

// 适配器
ArrayAdapter<String> adapter = new ArrayAdapter<>(
    this,
    android.R.layout.simple_list_item_1,
    dataList
);

// 设置适配器
listView.setAdapter(adapter);

在以上代码中,ListView 控件需要一个 Adapter 来提供数据源。而 ArrayAdapter 就是一个适配器,它将 List 转换成了 ListView 所需的 Adapter。

总结

适配器模式是一种常用的设计模式,用于将一个类的接口转换成客户端希望的另一个接口,以提高代码的复用性和灵活性。适配器模式由目标接口、原始接口、适配器和客户端组成。适配器模式适用于客户端希望使用一个不兼容的接口或重用一个现有的类但接口不符合需求的场景。

在 Android 开发中,适配器模式广泛应用于 ListView、RecyclerView 等控件中,用于提供数据源并将数据显示在控件上。

掌握适配器模式可以帮助我们更好地理解现有的代码,并能够编写更加灵活和可复用的代码。