一、UML类图

二、代码示例

  • Client:
public class Client {public static void main(String[] args) {Context context = new Context(new ConcreteStrategy());context.contextMethod();}
}
  • Strategy:
public interface Strategy {void strategyMethod();
}
  • ConcreteStrategy:
public class ConcreteStrategy implements Strategy{@Overridepublic void strategyMethod() { }
}
  • Context:
public class Context {private Strategy strategy = null;public Context(Strategy strategy) {this.strategy = strategy;}public void contextMethod() {this.strategy.strategyMethod();}
}

三、角色介绍

  • Client(客户端):
    客户端角色,程序的调用者。
  • Strategy(策略):
    该角色负责决定实现策略所必需的接口。
  • ConcreteStrategy(具体的策略):
    该角色负责实现Strategy角色的接口,即负责实现具体的策略。
  • Context(上下文):
    负责使用Strategy角色,还保存了ConcreteStrategy角色的实例,并使用ConcreteStrategy角色去实现需求。

设计模式之策略模式(Strategy模式)相关推荐

  1. 前端设计模式之策略(Strategy)模式

    定义 策略(Strategy)模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户.策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法 ...

  2. java api中的设计模式_Java API 设计模式之策略(Strategy)

    策略设计模式与状态设计模式相类似.我们提到过,状态设计模式包含一个状态对象,该对象封装一个上下文对象的状态.策略设计模式包含一个策略对象.该对象与状态设计模式的状态对象相类似.它们之间的关键不同在于: ...

  3. STRATEGY模式(冒泡算法为例)

    STRATEGY模式 STRATEGY模式使用了一种非常不同的方法来倒置通用算法和具体实现之间的依赖关系. 不是将通用的应用算法放进一个抽象基类中,而是将它放进一个名为BubbleSorter的具体类 ...

  4. 设计模式之策略模式(Strategy)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  5. 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...

  6. 趣谈设计模式 | 策略模式(Strategy):你还在使用冗长的if-else吗?

    文章目录 案例:指挥官AI 策略模式 配合工厂模式 总结 完整代码与文档 案例:指挥官AI 案例可能不符合实际逻辑,仅用于表述设计模式的思想,勿介意 假设我们开发了一款类似全面战争的即时战略游戏,为了 ...

  7. C++设计模式之策略模式(Strategy)

    Strategy策略模式 作用:定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户. UML图: 代码实现 #include <iostream& ...

  8. 设计模式学习笔记——策略(Strategy)模式

    设计模式学习笔记--策略(Strategy)模式 @(设计模式)[设计模式, 策略模式, Stategy] 设计模式学习笔记策略Strategy模式 基本介绍 策略案例 类图 实现代码 Hand类 S ...

  9. 解读设计模式----策略模式(Strategy Pattern)

    一.模式概述      策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同.其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法.       在我应 ...

  10. 设计模式--策略模式(strategy)

    1.策略模式(strategy ['strætədʒi]) 我的理解是:方案候选模式 (反正关键就是有很多的候选,哈哈) 看了很多例子,都是在说鸭子的,那个例子很好,在这里可以看 他们生产鸭子,我们就 ...

最新文章

  1. 科学家:冬天,就应该睡饱了再起床上班!
  2. [Jmeter]Jmeter环境搭建
  3. OkHttp协议介绍以及文件下载和上传+OkHttp协议封装+OkHttp拦截器____SpringBoot——集成Okhttp3
  4. Pandas 文本数据方法 is*()
  5. php存库,php – 使用Laravel实现存储库模式
  6. Android 开发问题
  7. 一个简单的HTML网页——传统节日春节网页(HTML+CSS)
  8. spring nature
  9. 学累了可以看漫威电影啊
  10. 利用易语言实现简单的文本加密和解密
  11. EAS中没有的核算项目新增
  12. Hadoop(八)网站流量分析
  13. 自然语言处理入门 第一章 新手上路
  14. Python实现rosbag转换成video
  15. WPS下合并doc文档
  16. 视频教程-Kali Linux 网络安全渗透测试-渗透测试
  17. 秋招总结|阿里转正失败,到拿到10个大厂产品offer
  18. 【数学】焦点弦定理(?)
  19. 淘宝直播丨900W粉店铺夺行业周榜Top1,商家自播增长要素全解析
  20. 大佬总结的电磁兼容知识,EMC整改六步走,看完感觉太简单了点

热门文章

  1. 如何实现C++中类编写的头文件和源文件的拆分
  2. OpenSL ES与AAudio简单介绍
  3. 棋牌游戏怎么运营才能赚钱
  4. 高等数学18讲(19版)第七讲 定积分的计算例题
  5. 智能车电磁环岛处理方法_UV漆与TPU智能手表套附着力差解决方法之TPU处理剂
  6. Github上比较优秀的Android项目
  7. 步进电机脱机状态实质
  8. 创成汇创业者投融资对接应该注意点什么?
  9. 这应该是雅思界的天花板
  10. python是面对什么的高级语言_Python语言是一种高级语言。