当前位置: 首页> 娱乐> 八卦 > 设计模式-策略模式

设计模式-策略模式

时间:2025/9/7 17:26:03来源:https://blog.csdn.net/m0_47743175/article/details/139141802 浏览次数:1次

前言:

设计模式不用就忘,之前在博客园写的设计模式就不放到csdn中了,加个锚点,方便日后温习:

设计模式——创建型模式之工厂模式 - 山月云星 - 博客园 (cnblogs.com)

正文:

策略模式允许在运行时选择算法或策略,而无需硬编码。下面是一个简单的策略模式示例,涉及两种不同的排序策略:升序和降序

// 策略接口 
public interface SortingStrategy { void sort(int[] numbers); 
}

创建两个实现了该策略接口的具体策略类

// 升序排序策略
public class AscendingSortStrategy implements SortingStrategy {@Overridepublic void sort(int[] numbers) {Arrays.sort(numbers);}
}// 降序排序策略
public class DescendingSortStrategy implements SortingStrategy {@Overridepublic void sort(int[] numbers) {int n = numbers.length;for (int i = 0; i < n-1; i++) {for (int j = 0; j < n-i-1; j++) {if (numbers[j] > numbers[j+1]) {// 交换元素int temp = numbers[j];numbers[j] = numbers[j+1];numbers[j+1] = temp;}}}}
}

创建一个上下文类,它将使用选定的策略来执行操作

public class Sorter { private SortingStrategy strategy;public Sorter(SortingStrategy strategy) {this.strategy = strategy;}public void sortNumbers(int[] numbers) {strategy.sort(numbers);}
}

最后,客户端代码可以动态选择并使用不同的排序策略

public class ClientCode {public static void main(String[] args) {int[] numbers = {5, 3, 8, 1, 9};Sorter ascendingSorter = new Sorter(new AscendingSortStrategy());ascendingSorter.sortNumbers(numbers);System.out.println("Ascending order: " + Arrays.toString(numbers));Sorter descendingSorter = new Sorter(new DescendingSortStrategy());descendingSorter.sortNumbers(numbers);System.out.println("Descending order: " + Arrays.toString(numbers));}
}

SortingStrategy 是策略接口,AscendingSortStrategy 和 DescendingSortStrategy 是具体的策略实现,Sorter 是上下文,它使用策略来执行排序操作。客户端代码可以根据需要选择不同的策略对象。

关键字:设计模式-策略模式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: