找回密码
 立即注册
首页 业界区 业界 设计模式(六)适配器

设计模式(六)适配器

仇华乐 3 天前
一、定义

将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。适配器模式是一种结构型模式。
二、描述

包含以下三个角色:
1.png
1、Target(目标抽象类):目标抽象类定义了客户所需要的接口,可以是一个抽象类或接口,也可以是一个具体的类,由于C#不支持多继承,所以它只能是接口。
2、Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。适配器Adapter是适配者模式的核心,在适配器模式中,它通过继承Target并关联一个Adaptee对象使二者产生联系。
3、Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下甚至没有适配者类的源代码。
三、例子

X公司很久以前曾经开发了一个算法库,包含了排序、查找等算法。在为某学校开发教务管理系统时,开发人员设计了一个成绩操作接口IScoreOperation,在该接口中声明了排序方法Sort(int[])和查找方法Search(int[],int),但是为了提高排序和查找的效率,决定重用算法库中的快速排序算法类QuickSort和二分查找算法类BinarySearch。算法库已经没有源码了,需要在不改动两边代码的情况下完成功能。
2.png
IScoreOperation:抽象成绩操作接口,充当目标抽象类
  1. public interface IScoreOperation
  2. {
  3.     int[] Sort(int[] array);
  4.     int Search(int[] array, int key);
  5. }
复制代码
QuickSortHelper、BinarySearchHelper:快速排序算法类、二分查找算法类,充当适配者类
[code]public class QuickSortHelper{    public int[] QuickSort(int[] array)    {        Sort(array, 0, array.Length - 1);        return array;    }    public void Sort(int[] array, int p, int r)    {        int q = 0;        if (p < r)        {            q = Partition(array, p, r);            Sort(array, p, q - 1);            Sort(array, q + 1, r);        }    }    public int Partition(int[] array, int p, int r)    {        int x = array[r];        int j = p - 1;        for (int i = p; i
您需要登录后才可以回帖 登录 | 立即注册