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);
}
}
/**
* 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);
}
}