码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之策略模式

时间:2016-06-04 17:55:39      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

策略模式

说明:一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。

 

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!