设计模式之策略模式Strategy

package StrategyModel;
/**
* strategyModel模式意图是:
* 定义一系列算法,把它们封装起来,并且使它们可相互替换。
* 此模式使得算法可独立于使用它的客户而变化
* @author Administrator
*例如:我们现在有各种不同的排序算法(冒泡、快速、插入),需要
*建立一个能够在运行时才决定使用何种算法对一个数组进行排序的类
*/
public interface IArraySort {

public abstract int[] sort(int[] arry);//排序算法

}
===================================================================
package StrategyModel;

public class BubbleSort implements IArraySort{

@Override
public int[] sort(int[] arry) {
System.out.println("BubbleSort。。。。。");
return arry;
}
}
==================================================================
package StrategyModel;

public class QuickSort implements IArraySort{

@Override
public int[] sort(int[] arry) {
System.out.println("QuickSort。。。。。");
return arry;
}
}
===================================================================
package StrategyModel;

public class InsertSort implements IArraySort{

@Override
public int[] sort(int[] arry) {
System.out.println("InsertSort。。。。。");
return arry;
}
}
=================================================================
package StrategyModel;
/**
* 利用现成的排序类,编写这个排序策略类
* @author Administrator
*
*/
public class SortStrategy {

private IArraySort strategy;

public SortStrategy(IArraySort sort){
this.strategy = sort;
}

//排序数组
public int[] sortArray(int[] arry){
return strategy.sort(arry);
}

//改变排序算法
public void changSortAlgorithm(IArraySort sort){
this.strategy = sort;
}

/**
* 从以下代码可知,我们实现了在运行期间自由切换排序算法的目标
* 基本原则是,定义接口,在实现排序类SortStrategy中,构造方法传
* 此接口为参数,这样就可以算法的切换
* @param args
*/
public static void main(String args[]){
int array[] = {56,20,36,43,10};
SortStrategy sort = new SortStrategy(new BubbleSort());
sort.sortArray(array);

sort.changSortAlgorithm(new QuickSort());
sort.sortArray(array);

sort.changSortAlgorithm(new InsertSort());
sort.sortArray(array);

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值