现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法

UML类图
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法_第1张图片
源码:

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
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

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

你可能感兴趣的:(设计模式,java,算法,java)