一、 实验目的
- 掌握策略模式(Strategy)的特点
- 分析具体问题,使用策略模式进行设计。
二、 实验环境
Eclipse
三、实验内容:
(写出主要的内容)
某系统提供了一个用于对数组数据进行操作的类,该类封装了对数组的常见操作,如查找数组元素、对数组元素进行排序等。现以排序操作为例,使用策略模式设计该数组操作类,使得客户端可以动态地更换排序算法,可以根据需要选择冒泡排序或选择排序或插入排序,也能够灵活地增加新的排序算法。
【模式UML图】
【模式代码(JAVA语言实现)】
package chelue;
public class ArrayHandler {
private Sort sortObj;
public ArrayHandler() {
}
public ArrayHandler(Sort sortObject) {
this.sortObj = sortObject;
}
public void setSort(Sort sortObj) {
this.sortObj=sortObj;
}
public int[] sort(int arr[]) {
return sortObj.sort(arr);
}
public void print(int[] arr) {
sortObj.printObject(arr);
}
public void setSortObject(Sort sortObject) {
this.sortObj = sortObject;
}
}
package chelue;
public class BubbleSort implements Sort{
public int[] sort(int arr[]) {
for (int i = 0; i < arr.length - i; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if(arr[j] > arr[j + 1]) {
swap(arr, j, j + 1);
}
}
}
return arr;
}
}
package chelue;
public class InsertionSort implements Sort {
@Override
public int[] sort(int[] arr) {
int len = arr.length;// 获取数组长度。避免下边重复获取。
if(arr == null || len == 0