策略模式:一个类的行为(或策略)可以在运行时更改。

如对一个数组排序,可以使用不同的排序策略,有选择排序、冒泡排序、快速排序等。

在程序运行过程中,可以根据不同的条件选择相应的排序算法。

Java 实现策略模式:

步骤 1:创建策略接口

public interface SortStrategy {public int[] sort(int[] array);
}

步骤 2:实现策略接口的具体类,这里实现了 3 个具体的排序策略类

public class SelectSort implements SortStrategy{@Overridepublic int[] sort(int[] array) {// select sort ...return array;}
}public class BubbleSort implements SortStrategy{@Overridepublic int[] sort(int[] array) {// bubble sort ...return array;}
}public class QuickSort implements SortStrategy{@Overridepublic int[] sort(int[] array) {// quick sort ...return array;}
}

步骤 3:创建策略的上下文类

public class Context {private SortStrategy strategy;public Context(SortStrategy strategy){this.strategy = strategy;}public int[] executeStrategy(int[] array){return strategy.sort(array);}public void changeStrategy(SortStrategy strategy) {this.strategy = strategy;}
}

步骤 4:使用Context来改变策略

public class StrategyPatternDemo {public static void main(String[] args) {int[] array = new int[] {6, 5, 9, 2, 7, 3};int[] sortArray = null;//选择排序Context context = new Context(new SelectSort());sortArray = context.executeStrategy(array);print(sortArray);//冒泡排序context.changeStrategy(new BubbleSort());      sortArray = context.executeStrategy(array);print(sortArray);//快速排序context.changeStrategy(new QuickSort());      sortArray = context.executeStrategy(array);print(sortArray);}
}

策略模式-Java实现相关推荐

  1. [设计模式] - 策略模式(Java篇)

    来源:http://user.qzone.qq.com/31584 (QQ空间) http://b.qzone.qq.com/cgi-bin/blognew/blog_output_data?uin= ...

  2. 策略模式java 用例_java策略模式简单用例

    运用java策略模式一个小程序 /** * */ package Strategy; import java.util.Arrays; /** * @author HuangRong * @Funti ...

  3. java策略模式(Java策略模式多种返回结果)

    Java设计模式的中介者模式是怎样的? 如果对象之间的关系原本一目了然,中介对象的加入便是"画蛇添足". 来看下中介者模式的组成部分吧. 1) 抽象中介者(Mediator)角色: ...

  4. 设计模式--策略模式--Java实现

    ***策略模式4步走***

  5. Java设计模式之行为型:策略模式

    一.背景: 在开发中经常遇到这种情况,实现某个功能有多种算法策略,我们可以根据不同环境或者条件选择不同的算法策略来完成该功能,比如查找.排序等,一种常用方式是硬编码在一个类中,如需要提供多种查找算法, ...

  6. Strategy策略模式

    策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可相互替换.该模式可使得算法能独立于使用它的客户而变化.Strategy模式是行为模式,正因为他是一种行为模式,所以他不是用来解决类的实例化的 ...

  7. 策略模式示例代码_策略设计模式示例

    策略模式示例代码 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要的 ...

  8. 设计模式 | 策略模式及典型应用

    本文的主要内容: 介绍策略模式 示例 商场购物打折策略的实现 策略模式总结 源码分析策略模式的典型应用 Java Comparator 中的策略模式 Spring Resource 中的策略模式 Sp ...

  9. Java中的策略模式实例教程

    策略模式是一种行为模式.用于某一个具体的项目有多个可供选择的算法策略,客户端在其运行时根据不同需求决定使用某一具体算法策略. 策略模式也被称作政策模式.实现过程为,首先定义不同的算法策略,然后客户端把 ...

最新文章

  1. 12个现实世界中的机器学习真相
  2. Microbiome:使用16S rRNA基因数据集实现种水平的分类
  3. SalttSack自动化运维(四)——JINJA模块
  4. Mac OS X中MacPorts安装和使用
  5. SAP ABAP实用技巧介绍系列之Debug XSLT transformation
  6. 汇总区间Python解法
  7. javax.servlet.jsp.JspTagException:
  8. 小程序-实现 tab-及多个列表选项切换
  9. ps放大素色图标(黑色特别有效)
  10. SpringBoot Spring Cloud项目学习汇总
  11. [心得]怪诞心理学精华笔记
  12. 操作系统学习笔记02【进程控制——进程互斥的硬件实现方法】【自用】
  13. 取消唤醒计算机需要密码怎么设置密码,Win10唤醒睡眠时需要输入密码如何取消_win10系统取消唤醒密码的方法...
  14. 什么是SOL注入攻击?Land攻击?Ping of Death攻击?Teardrop攻击?
  15. sonar本地扫描,没有胡里花哨的操作,通俗易懂~
  16. 中国信息安全测评中心-自主原创测评
  17. Android中HorizontalScrollView的使用总结
  18. Qt5 学习之路及嵌入式开发教程11:Qt5标准输入对话框类及QSlider控件
  19. JS字符串截取 “指定字符” 前面和后面的内容!
  20. bigdecimal不等于0怎么写_不了解这些练习技巧,你怎么能写好毛笔字?

热门文章

  1. 20155307 《Java程序设计》课堂实践项目数据库
  2. DRUID连接池的使用
  3. javascript学习笔记(七) 函数
  4. C#如何设置Listview的行高-高度 转载
  5. python consul
  6. 《面向对象程序设计》课程作业 (三)
  7. 编译Sqoop2错误解决
  8. 201521123050 《Java程序设计》第8周学习总结
  9. Throwable、Error、Exception、RuntimeException 区别
  10. request.getParameterValues与request.getParameter的区别