欢迎大家加入我的社区:http://t.csdn.cn/Q52km
社区中不定时发红包

1、UML类图

在这里插入图片描述


2、源码:

package com.back.zheng;

public interface DataOperation {
	public void sort(int data[]);//排序方法
	public void search(int[] list,int key);//查找方法

}

package com.back.zheng;

public class SuanFaAdapter implements DataOperation {
	private QuickSort quicksort; // 定义适配者QuickSort的对象
	private BinarySearch binarysearch; // 定义适配者 BinarySearch的对象
	// 构造函数初始化适配者对象

	public SuanFaAdapter() {
		quicksort = new QuickSort(); // 实例化QuickSort对象
		binarysearch = new BinarySearch(); // 实例化 BinarySearch对象
	}

	@Override
	public void sort(int data[]) {
		// 建立连接实现快速排序
		quicksort.quickSort(data);// 通过对象调用实现快速排序的功能

	}

	@Override
	public void search(int[] list, int key) {
		// 建立连接实现二分查找
		binarysearch.binarySearch(list, key);// 通过对象调用实现二分查找的功能

	}

}

package com.back.zheng;

public class QuickSort {
	//快速排序
	public void quickSort(int data[]) {
		java.util.Arrays.sort(data);	//直接调用排序方法
		print(data);
	}   
	//数组输出
	
	public void print(int data[]) {
		for(int x=0;x<data.length;x++) {
			System.out.print(data[x]+"、");
		}
	}

}

package com.back.zheng;

public class BinarySearch {
	// 二分查找
	public void binarySearch(int[] list,int key) {
		// 调用java.util.Arrays的binarySearch二分查找方法
		System.out.print(java.util.Arrays.binarySearch(list, key));
	}

}

package com.back.zheng;

public class Client {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//定义一个数组
		int data[]=new int[] {2,4,1,5,3,8,6,7};
		DataOperation operation;	//定义接口对象
		operation=new SuanFaAdapter();	//	实例化接口对象向上转型
		System.out.println("排序前的数组:");
		for(int i=0;i<data.length;i++) {
			System.out.print(data[i]+"、");
		}
		
		System.out.println("\n\n排序后的数组");
		operation.sort(data);//调用排序
		//查找数据4所在的下表
		System.out.println("\n\n输出数字4所在的索引:");
		operation.search(data,4);//调用查找

	}

}

3、优缺点分析

优点:1、将目标类和适配者类解耦。2、增加了类的透明性和复用性,通过一个适配器可以重用现有的适配者类。3、灵活性和扩展性好,符合开闭原则。
缺点:1、对于java、c++等不支持多重继承的语言,一次最多只能适配一个适配者。2、适配者不能作为最终类。3、在java等语言中类适配器的目标抽象类必须是接口,不能为类。

在这里插入图片描述

posted on 2022-08-28 22:16  热爱技术的小郑  阅读(418)  评论(0编辑  收藏  举报