标签:
说明:一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。
UML图如下所示:
代码如下所示:
package com.dai.strategy; public interface Sort { public int[] sortNum(int[] arr); } package com.dai.strategy; /** * * @author 戴礼明 *日期: 2016-6-4 *content:冒泡排序
*/ public class Bubble implements Sort{ public int[] sortNum(int[] arr) { for(int i=1;i<arr.length;i++){ for(int j=0;j<arr.length-i;j++){ if(arr[j]>arr[j+1]){ int tmp=arr[j]; arr[j]=arr[j+1];
arr[j+1]=tmp; } } } System.out.println("我是冒泡排序!"); return arr; } } package com.dai.strategy; /** * * @author 戴礼明 *日期: 2016-6-4 *content:插入排 */ public class InsertionSort implements Sort{ public int[] sortNum(int[] arr) { for(int i=1;i<arr.length;i++){ int j=i-1; int tmp=arr[i]; while(j>=0&&arr[j]>tmp){ arr[j+1]=arr[j]; j--; } arr[j+1]=tmp; } System.out.println("我是插入排序算法"); return null; } } package com.dai.strategy; /** * * @author 戴礼明 *日期: 2016-6-4 *content:选择排序 */ public class SelectionSort implements Sort{ public int[] sortNum(int[] arr) { int index=0; for(int i=0;i<arr.length;i++){ index=i; for(int j=i+1;j<arr.length;j++){ if(arr[j]<arr[index]){ index=j; } } if(index!=i){ int tmp=arr[i]; arr[i]=arr[index]; arr[index]=tmp; }
} System.out.println("我是选择排序!"); return arr;
}
} package com.dai.strategy; /** * @author 戴礼明 *日期: 2016-6-4 *content:操作运算 */ public class Operation { private Sort sort; public Operation(Sort sort) { this.sort=sort; } public void operation(int[] arr){ sort.sortNum(arr); } } package com.dai.strategy; /** * * @author 戴礼明 *日期: 2016-6-4 *content:策略模式测试 */ public class TestStrategy { public static void main(String[] args) { int[] a={2,1,4,3,6,2,7,8}; Operation operation=new Operation(new Bubble()); operation.operation(a); Operation operations=new Operation(new SelectionSort()); operations.operation(a); Operation operationss=new Operation(new InsertionSort()); operationss.operation(a); } }
标签:
原文地址:http://www.cnblogs.com/daiqiaobing/p/5559086.html