适配器模式:不修改源码,将快速排序与二分查找适配到指定接口 | 类图 + Java 代码实现
以下是使用 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` 接口。 ######[AI写代码神器 | 794点数解答 | 2024-11-18 20:40:45]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)438
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)378
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)371
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)337
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1232
- Java 实战:创建 Vehicle 接口并在 Bike 类实现,T4 类调用启动与停止方法(字节豆包 | 130点数解答 | 2024-09-19 17:40:54)436
- Python 实现移位与仿射密码:精准加密解密及关键逻辑解析(字节豆包 | 798点数解答 | 2024-12-18 15:55:47)282
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)384
- Java顺序表源码深度解析:从内存布局到扩容机制与Windows实战指南(阿里通义 | 2528点数解答 | 2026-04-01 10:06:46)28
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)451
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)443
- 车载系统 UML 类图设计:涵盖 Car、Engine、娱乐系统等的完整类定义与关系解析 (字节豆包 | 760点数解答 | 2024-08-15 22:51:04)332