设计模式之策略模式Strategy

本文介绍了策略模式在排序算法中的应用,展示了如何在运行时动态选择和切换不同的排序算法来对数组进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

}

}
基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型,个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值