GOF《设计模式》一书对Strategy模式是这样描述的:定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。别名:政策(Policy)。

Strategy模式主要用来平滑地处理算法的切换,它以下列几条原则为基础:

1) 每个对象都是一个具有职责的个体。

2) 这些职责不同的具体实现是通过多态的使用来完成的。

3) 概念上相同的算法具有多个不同的实现,需要进行管理。

Strategy模式的应用场景一般是:

- 具有多种可能需要实现的算法

- 需要在程序中对算法进行动态切换

结构如下图所示:

策略模式实现起来其实很简单,以下是一个关于选择排序算法的简单的例子:

public interface Strategy {

public void orderAlgorithmic();

}

public class ConcreteStrategyA implements Strategy{

@Override

public void orderAlgorithmic() {

System.out.println("调用快速排序法");

}

}

public class ConcreteStrategyB implements Strategy{

@Override

public void orderAlgorithmic() {

System.out.println("调用插入排序法");

}

}

public class ConcreteStrategyC implements Strategy{

@Override

public void orderAlgorithmic() {

System.out.println("调用归并排序法");

}

}

public class Context {

void DoAction(Strategy str) {

str.orderAlgorithmic();

}

}

public class Client {

public static void main(String[] args) {

new Context().DoAction(new ConcreteStrategyA());

new Context().DoAction(new ConcreteStrategyB());

new Context().DoAction(new ConcreteStrategyC());

}

}

输出:

调用快速排序法

调用插入排序法

调用归并排序法

java strategy模式,Java Strategy 模式简介相关推荐

  1. 【Java设计模式】Java设计模式之(十五)策略模式(Strategy Pattern)

    本文目录 一.策略模式介绍 1.1 含义 1.2 适用场景 1.3 主要解决 1.4 应用实例 1.5 优缺点 二.策略模式实现 2.1 类图 2.2 代码实现 第一个案例:策略模式代码实现 第二个案 ...

  2. Java 策略模式( Strategy Pattern)详解

    说明: 策略模式是一种行为型设计模式,它允许你定义一组算法,将每个算法封装为独立的类,并使它们可以互相替换.它使得算法的实现能够独立于使用它的客户端. 在Java中,策略模式通常涉及以下组件: 上下文 ...

  3. java 23 种设计模式-23-java 策略模式(Strategy Pattern)

    目录 目录 策略模式 实际案例 定义 测试 实现方式 UML & Code UML Code 系列导航 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运 ...

  4. java策略设计模式输出字母_Java 设计模式-策略模式(Strategy Pattern)

    策略模式(Strategy Pattern)属于对象行为模式.其作用是针对一组算法,将每个算法封装到具有共同接口的独立类中,从而使它们可以相互替换. 策略模式的意图是将可以互换的方法封装在各自的对立类 ...

  5. Java设计模式----策略模式(Strategy)

    1.  策略模式: 策略模式,也称为政策模式,定义如下: 定义一组算法,将每个算法都封装起来,使他们可以相互转化 2.  策略模式的原理是面向对象的继承和多态.策略模式的3个角色 a. Strateg ...

  6. java(15)-策略模式(Strategy Pattern)

    一.了解(都是跟张龙老师的视频学的): 1.策略模式:a)封装变化的概念.b) 编程中使用接口,而不是对接口的实现.这是面向接口的编程. 2.策略模式的定义: a)定义一组算法,将每个算法都封装起来, ...

  7. Java设计模式之十一 ---- 策略模式和模板方法模式

    前言 在上一篇中我们学习了行为型模式的访问者模式(Visitor Pattern)和中介者模式(Mediator Pattern).本篇则来学习下行为型模式的两个模式,策略模式(Strategy Pa ...

  8. Java进阶篇设计模式之十二 ---- 备忘录模式和状态模式

    前言 在上一篇中我们学习了行为型模式的策略模式(Strategy Pattern)和模板模式(Template Pattern).本篇则来学习下行为型模式的两个模式,备忘录模式(Memento Pat ...

  9. Java设计模式之行为型模式

    1 设计模式简介 软件设计模式是一套被反复使用的,多数人知晓的.经过分类编写.代码设计经验的总结.它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案,它是解决特定问题的一系列套路, ...

  10. Java SSM项目运用策略模式思想

    1. 策略模式简介 策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式让算法的变更和替换独立于使用算法的客户. 策略模式中体现了如下几种 ...

最新文章

  1. 循环输入正整数,求其平均值
  2. 关于GitHub推送时发生Permission denied (publickey)的问题
  3. python爬虫下载文件-【Py大法系列--03】Python如何自动下载文件
  4. ABAP--Smart Forms多语言翻译
  5. [转]调试 smallcorgi/Faster-RCNN_TF 的demo过程遇到的问题
  6. 2名数学家或发现史上最快超大乘法运算法,欲破解困扰人类近半个世纪的问题...
  7. web2py的“hello world”
  8. 结构体嵌套结构体c语言,结构体的相互嵌套
  9. xp3系统配置cocos2dx
  10. html生物代码,方舟生存进化生物代码 手游生物指令大全
  11. 【综合类型第 16 篇】W3School 离线手册最新版下载
  12. Houdini13:合成
  13. 【华为机试真题 Python实现】统计射击比赛成绩
  14. uniapp uniCloud 云开发上传图片与查看图片
  15. 腾讯面试--测试工程师社会招聘面试经历
  16. WebGIS全栈修炼之路2——筑基,修出你的第一缕Cesium之气
  17. 外贸市场越来越淡,个人soho,小外贸B2C公司如何转型? Read more: http://liedaoshou.com/seo.html#0-sqq-1-60778-9737f6f9e09df
  18. 李日学撤回私有化要约:寺库市值跌至1783万美元 趣店损失惨重
  19. Netty handler无法进行依赖注入的问题
  20. 基于python人工智能的最全学习路线总结,思路明朗了学习才高效

热门文章

  1. 微信小程序-当用户拒绝了位置信息的请求时,提醒用户去设置地理位置授权
  2. java发送和接收文件_Java通过套接字发送和接收文件(byte [])
  3. ai去除水印_ai全自动视频剪辑软件,每天批量制作800条原创视频!
  4. websecurity连接mysql_将MySQL连接器JAR放在我的WAR的WEB-INF / lib而不是tomcat lib中,使j_security_check失败...
  5. mybatis报错解决办法 :Result Maps collection does not contain value for java.lang.String
  6. 添加或删除jupyter notebook的虚拟环境
  7. python soup findall 第几个元素_python – 如何在BeautifulSoup中获取所有父标签的列表?...
  8. python算闰年和平年的天数_Python自定义函数计算给定日期是该年第几天的方法示例...
  9. xp系统桌面计算机不见了怎么办,XP系统的垃圾箱在桌面上不见了!怎么处理?
  10. hashmap储存有向图_java-对后边缘进行运算以获取有向图中的循环数