12 行为模式 - 策略(Strategy)模式

1.用意

针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换。”

 

2.类图


3.代码

/*
 * 环境角色
 */
public class Context {
	private Strategy strategy;
	
	//策略方法
	public void contextInterface() {
		strategy.strategyInterface();
	}
	public void setStrategy(Strategy s) {
		this.strategy = s;
	}
}


/*
 * 抽象策略类
 */
public abstract class Strategy {
	public abstract void strategyInterface();
}


/*
 * 具体策略类
 */
public class ConcreteStrategy extends Strategy {
	public void strategyInterface() {
		S.s("my algorithm...");
	}
}


/*
 * 测试类
 */
public class Test {

	public static void main(String[] args) {
		Context c = new Context();
		c.setStrategy(new ConcreteStrategy());
		c.contextInterface();
	}
}
 

z

策略模式(Strategy Pattern)详解 策略模式是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,并使它们可以互相替换。策略模式让算法独立于使用它的客户端而变化,使得客户端可以在不修改代码的情况下,通过组合不同的策略对象来改变应用的行为。策略模式的核心思想是:“定义一系列算法,封装每一个算法,并使它们可以互换。”在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的上下文对象。策略对象改变上下文对象的执行算法。在以下情况下,策略模式特别有用:当需要在运行时选择不同的算法时:策略模式允许客户端在运行时选择不同的算法实 阅读详情

相关推荐

线性代数学习笔记(十)——矩阵运算(二)

本篇笔记讲解矩阵的幂运算和矩阵的转置,其中矩阵进行幂运算的前提是矩阵为方阵,矩阵幂运算的两条性质与数的幂运算规则类似;矩阵转置的定义与行列式转置类似,但要注意由于矩阵的行数和列数不同,所以转置之后行数和列数变换。

li2008kui的专栏 1万+

STRATEGY(策略)——对象行为模式

STRATEGY(策略)——对象行为模式 1.意图              定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。              2.别名              政策(Policy)              3.动机l         人机对弈程序可以采用多种搜索算法。将这些算法硬编码

xiehuidong的专栏 998

手把手教你复现IEEE 2025高光谱图像盲超分算法DBSR(附开源代码与避坑指南)

本文详细介绍了如何从零复现IEEE 2025高光谱图像盲超分算法DBSR,包括环境配置、数据预处理、核心模块解析、训练策略及常见问题解决方案。特别针对开源代码中的关键步骤和潜在问题提供了实用指南,帮助研究者和开发者高效实现Deep blind super-resolution技术,适用于遥感、医疗等领域的图像增强应用。

weixin_42524708的博客 414

设计模式-策略模式 Strategy

策略类的定义比较简单,包含一个策略接口和一组实现这个接口的策略类。因为所有的策略类都实现相同的接口,所以,客户端代码基于接口而非实现编程,可以灵活地替换不同的策略。@Override//具体的算法...@Override//具体的算法...

weixin_46926189的博客 2280

告别配置迷茫:手把手教你用Vivado 2023.1配置Xilinx FPGA的DDR4 MIG IP核(含AXI接口详解)

本文详细介绍了如何在Vivado 2023.1中配置Xilinx FPGA的DDR4 MIG IP核,包括AXI接口的深度解析与优化。通过实战案例和调试技巧,帮助工程师快速掌握DDR4内存与FPGA的协同工作,提升系统性能。特别适合需要高性能计算和实时信号处理的开发者。

weixin_29231725的博客 440

深度学习十大算法之Word2Vec

Word2Vec的提出,标志着词嵌入技术的一次重大进步。Word2Vec是一种高效的词嵌入模型,由Google的研究团队于2013年开发。它使用一种称为神经网络的机器学习方法,通过学习大量文本数据,生成能够表达词语间丰富语义关系的词向量。Word2Vec的核心优势在于它能够捕捉到词语之间的细微关系。例如,在Word2Vec模型中,可以通过计算向量之间的距离来估计词语之间的相似度。这不仅能帮助理解语言的复杂性,还可以应用于各种NLP任务,如机器翻译和搜索引擎优化。

第欧根尼的酒桶的博客 1867

C#设计模式之策略模式(Strategy Pattern)

概述:        策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。下面就以一个示意性的实现讲解策略模式实例的结构。 这个模式涉及到三个角色: 环境(Context)角色:持有一个St

donnie88888888的专栏 4065

RTX4090上跑CenterNet训练

参考实现 url=https://github.com/xingyizhou/CenterNet.git commit_id=5b1a490a52da57d3580e80b8bb4bbead9ef2af96

遗失的神庙 1622

策略(Strategy)模式

文章目录策略(Strategy)模式1. 意图2. 别名3. 动机4. 适用性5. 结构6. 参与者7. 协作8. 效果9. 实现10. 代码示例11. 已知应用12. 相关模式13. 设计原则口袋14. 参考文献 策略(Strategy)模式 隶属类别——对象行为型模式 1. 意图 定义一系列算法(即算法组),分别封装起来,让他们之间可以互相替换,此模式可以让算法独立于它的客户变化 2. 别名...

qq_38636211的博客 1083

深入排查127.0.0.1拒绝连接:从端口占用到Tomcat服务启动的完整解决方案

本文针对开发者访问127.0.0.1时遭遇“拒绝连接”的常见问题,提供了一套完整的排查与解决方案。文章从端口占用检查入手,详细讲解了使用netstat命令识别进程,并深入分析了服务监听地址、IPv6配置、防火墙以及Tomcat服务安装与启动等核心环节。通过实战演练,指导读者系统性地解决从网络层到应用层的各类连接问题,最终确保本地服务成功运行并可通过本地回环地址正常访问。

weixin_29279047的博客 3201

第38节:cesium 风场效果(含源码+视频)

cesium 风场效果

qq_29384639的博客 2331

设计模式-19策略模式Strategy Pattern

策略模式是一种行为设计模式,通过定义一系列可互换的算法并将其封装,使算法能独立于使用它的客户端而变化。该模式适用于需要动态切换不同算法或行为的场景,可避免大量条件判断语句。其核心结构包括策略接口、具体策略类和使用策略的上下文类。实现时,先定义策略接口,然后创建具体策略类实现接口方法,最后通过上下文类动态设置和切换策略。示例展示了支付系统中的多种支付策略(信用卡、PayPal、银行转账)的灵活切换,体现了策略模式的可扩展性和解耦优势。 (149字)

d3y1`5 81_09 1089

NVIDIA Omniverse 技术浅析(三):NVIDIA RTX 技术

NVIDIA RTX 技术是 NVIDIA 推出的革命性图形渲染技术,旨在通过硬件加速和软件优化,实现高质量的实时图形渲染。RTX 技术在 NVIDIA Omniverse 平台中扮演着至关重要的角色,为其提供了强大的渲染能力。

m0_75253143的博客 351

策略模式--strategy

策略模式 含义: 策略模式(Strategy)属于对象行为型设计模式, 1.主要是定义一系列的算法, 2.把这些算法一个个封装成拥有共同接口的单独的类,并且使它们之间可以互换。 策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。这里的算法不要狭义的理解为数据结构中算法,可以理解为不同的业务处理方法。 策略模式由三个角色组成: 策略模式使用场景: 同一个系统中存在不同的逻辑算法,而彼此之间在不同场景中需要实现动态替换, 支付方式 可以选择:支付宝,微信,银联等,彼此之间就可以相互替换,

时光里的博客 619

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

设计模式十:策略模式(Strategy Pattern)

0、相关文章:=======(阅读量6376)1、详解====1.1、概念定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。本模式使得算法可独立于使用它的客户而变化。1.2、使用场景一个类定义了多种行为,并且这些行为在这个类的方法中以多个条件语句的形式出现,那么可以使用策略模式避免在类中使用大量的条件语句。1.3、UML结构图分析可以看到,策略模式中主要有以下几个角色:Strategy 接口,用于定义算法的固定套路。

2501_90425746的博客 1821

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

策略模式(Strategy Pattern)介绍

特性重构前重构后职责划分订单类包含所有折扣计算逻辑,职责过重每种折扣逻辑独立封装在策略类中,符合单一职责扩展性新增折扣需要修改方法,违反开闭原则新增折扣只需实现接口,无需修改现有代码可读性折扣逻辑混杂,可读性差每种策略独立,代码清晰,便于维护和测试灵活性无法在运行时动态切换折扣方式可通过动态更换策略复用性折扣逻辑无法复用策略类可在系统其他地方复用客户端交互客户端需要了解折扣类型字符串的细节客户端通过接口交互,无需知道具体实现。

weixin_45129228的博客 746

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

11、Strategy 策略模式

定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。 策略模式与模板模式 在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,策略模式与模版方法模式的区别仅仅是多了一个单独的封装类Context,它与模版方法模式的区别在于:在模版方法模式中,调用算法的主体在...

sinat_37138973的博客 239

【设计模式】——策略模式(Strategy Pattern)

策略模式是一种强大的设计模式,它通过定义一系列的算法族,并将每一个算法封装起来,使它们可以互相替换,从而提高了算法的灵活性和可重用性。在C++中实现策略模式时,我们需要定义抽象策略类、具体策略类和环境类,并通过环境类来调用具体的策略。策略模式的应用场景广泛,包括但不限于多种排序算法、多种支付方式、日志记录策略和缓存策略等。此外,策略模式还可以与其他设计模式结合使用,以应对更复杂的场景。通过合理使用策略模式,我们可以编写出更加灵活、可维护和可扩展的代码。

J^T的博客 1235

策略模式Strategy

原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11400764.html 1. 定义 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 2.结构图 Strategy:策略接口,用来约束一系列具体的策略算法。Context使用这个接口来调用具体的策略实现...

85

java设计模式之 strategy策略模式

什么是策略模式Strategy模式也叫策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定(策略)。Strategy模式主要用来平滑地处理算法的切换 。上面定义可能比较抽象,下面来举个例子说明一下:根据某个规则对一系列对象进行排序假如现在有一群猫的对象,我们要按照其年龄进行排序。那么很简单

刘本龙的专栏 1848

Strategy 策略模式

策略模式:定义一系列的算法,把他们一个个封装起来,并且使它们可以相互替换,。本模式使得算法可以独立于使用它的客户而变化。 故事背景:开发一款鸭子模拟游戏,游戏中会出现各种鸭子,一边游泳,一边嘎嘎叫。此系统的内部使用了标准的OO技术,设计了一个鸭子基类,并让各种鸭子继承此基类。基类中有Speak()方法,Swim()方法,还有一个虚方法Display()。3个子类WhiteDuck,BlackDu...

weixin_30567471的博客 103

‌工厂模式(Factory Pattern)和策略模式(Strategy Pattern)的主要区别!整理不易请及时收藏!!!

工厂模式(FactoryPattern)和策略模式(Strategy Pattern)的主要区别在于它们的目的、结构、关注点和适用场景。

zhaoylzy的博客 1007

策略模式(Strategy)

策略模式简介   1.策略模式的定义: 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。  2.策略模式举例:       先举个简单的例子:商场为了吸引顾客,采用了会员打折的方式来促销。 金牌会员打8折、银牌会员打9折、普通会员打9.5折,当顾客在商场购买了商品后根据会员的等级不同计算出最后的应付价格,面对这种情况在不使用策略模...

dianzhenluo3164的博客 331

策略模式(Strategy)及代码实现

模式定义: 生活中的例子 代码中的例子(何时该使用此模式): 该模式关键的角色: 该模式的主要优缺点如下: 和 其他模式 的 比较: 示例代码部分 总结: 相关链接: http://c.biancheng.net/view/1383.html https://refactoringguru.cn/design-patterns/chain-of-responsibility ...

rgc_520_zyl的博客 762

行为型-策略模式(Strategy)

先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式。

埃泽漫笔 640

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

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

网络资源是无限的 2643
上一篇: JS 项目的学习笔记
下一篇: 13 行为模式 - 模板方法(Template Method)模式
O2AtomLife
博客等级 码龄19年 2粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值