酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

(1)适配器模式 现有一个接口dataoperation定义了排序方法sort(int[]) 和查找方法search(int[], int),已知类quicksort的quicksort(int[])方法实现了快速排序算法,类binarysearch 的binarysearch(int[], int)方法实现了二分查找算法。试使用适配器模式设计一个系统,在不修改源代码的情况下将类quicksort和类binarysearch的方法适配到dataoperation接口中。绘制类图并编程实现。(要求实现快速排序和二分查找,使用对象适配器实现)

以下是使用 Java 实现的对象适配器模式的示例代码,以及对应的类图描述: 类图: ```plantuml interface DataOperation { void sort(int[]); int search(int[], int); } class QuickSort { void quickSort(int[]); } class BinarySearch { int binarySearch(int[], int); } class QuickSortAdapter implements DataOperation { QuickSort quickSort; QuickSortAdapter(QuickSort quickSort) { this.quickSort = quickSort; } @Override public void sort(int[] arr) { quickSort.quickSort(arr); } @Override public int search(int[] arr, int target) { throw new UnsupportedOperationException("QuickSortAdapter 不支持查找操作"); } } class BinarySearchAdapter implements DataOperation { BinarySearch binarySearch; BinarySearchAdapter(BinarySearch binarySearch) { this.binarySearch = binarySearch; } @Override public void sort(int[] arr) { throw new UnsupportedOperationException("BinarySearchAdapter 不支持排序操作"); } @Override public int search(int[] arr, int target) { return binarySearch.binarySearch(arr, target); } } ``` Java 代码: ```java interface DataOperation { void sort(int[]); int search(int[], int); } class QuickSort { public void quickSort(int[] arr) { // 快速排序的实现逻辑 System.out.println("执行快速排序"); } } class BinarySearch { public int binarySearch(int[] arr, int target) { // 二分查找的实现逻辑 System.out.println("执行二分查找"); return -1; } } class QuickSortAdapter implements DataOperation { QuickSort quickSort; QuickSortAdapter(QuickSort quickSort) { this.quickSort = quickSort; } @Override public void sort(int[] arr) { quickSort.quickSort(arr); } @Override public int search(int[] arr, int target) { throw new UnsupportedOperationException("QuickSortAdapter 不支持查找操作"); } } class BinarySearchAdapter implements DataOperation { BinarySearch binarySearch; BinarySearchAdapter(BinarySearch binarySearch) { this.binarySearch = binarySearch; } @Override public void sort(int[] arr) { throw new UnsupportedOperationException("BinarySearchAdapter 不支持排序操作"); } @Override public int search(int[] arr, int target) { return binarySearch.binarySearch(arr, target); } } public class AdapterPatternExample { public static void main(String[] args) { int[] array = {5, 3, 8, 2, 1}; QuickSort quickSort = new QuickSort(); DataOperation quickSortAdapter = new QuickSortAdapter(quickSort); quickSortAdapter.sort(array); BinarySearch binarySearch = new BinarySearch(); DataOperation binarySearchAdapter = new BinarySearchAdapter(binarySearch); int result = binarySearchAdapter.search(array, 3); } } ``` 在上述代码中,`QuickSortAdapter` 和 `BinarySearchAdapter` 类分别将 `QuickSort` 和 `BinarySearch` 类的方法适配到了 `DataOperation` 接口。 [2024-11-18 20:40:45 | AI写代码神器 | 794点数解答]

相关提问