浅谈Java设计模式之策略模式

浅谈Spring框架应用的设计模式(六)——策略模式 Spring是目前Java企业级开发应用广泛的框架之一,其具有强大的生态,且得益于其提供的高扩展能力,能够减少开发成本,提高开发效率。如此优秀的框架,当然离不开各种设计模式,本文主要介绍设计模式中的策略模式在Spring框架中的应用。... 阅读详情

策略模式用于封装一系列的算法,这些算法被封装在Context类中(通常),程序可以自由的选择Context类中所封装的算法,其优势在于可以支持算法的自由切换。

详见如下的代码:

public interface Strategy//定义一个策略,所有的算法都基于这个策略
{
	public void method();//定义通用的方法
}

public class StrategyA implements Strategy //定义A策略
{

	@Override
	public void method() 
	{
		System.out.println("方法A");
		
	}

}

public class StrategyB implements Strategy //定义B策略
{

	@Override
	public void method() 
	{
		System.out.println("方法B");
	}

}

public class ContextS//定义一个Context,用来封装和选择策略
{
	private Strategy strategy;

	public ContextS(Strategy strategy) 
	{	
		this.strategy = strategy;
	}
	
	public Strategy getStrategy()
	{
		if(strategy == null)
		{
			strategy=new StrategyA();//如果没有策略,则默认为A策略
		}
		return strategy;
	}
	public void changeStrategy(Strategy s)//改变策略
	{
		this.strategy=s;
	}
	

}

下面来测试一下:

public class Test 
{
	public static void main(String[] args) 
	{
		ContextS contexts=new ContextS(null);
		
		contexts.getStrategy().method();//调用StrategyA的方法
		
		contexts.changeStrategy(new StrategyB());
		
		contexts.getStrategy().method();//调用StrategyB的方法

	}

}


控制台的输出如下:

方法A
方法B


NDVI空间分布变化Slope趋势分析与F检验(自用) 1.NDVI数据预处理2.一元线性回归分析3.Slope趋势分析与F检验 阅读详情

相关推荐

优快云余额充值前必读:这5个隐藏条款,90%的开发者都忽略了(附iOS内购避坑指南)

本文揭示了优快云余额充值中90%开发者忽略的5个隐藏条款,包括不可退款规则、iOS内购限制、账号安全责任等关键内容,特别提供了iOS内购避坑指南,帮助开发者避免资金损失和账号风险。

weixin_26765287的博客 146

JAVA设计模式学习之策略模式详解

在软件开发中,经常会遇到这种情况,开发一个功能可以通过多个算法去实现,我们可以将所有的算法集中在一个类中,在这个类中提供多个方法,每个方法对应一个算法, 或者我们也可以将这些算法都封装在一个统一的方法中,使用if…在策略模式中可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里每一个封装算法的类都可以被称为一种策略,为了保证这些策略在使用时具有一致性,一般会提供一个抽象的策略类来做算法的声明.而每种算法对应一个具体的策略类.此角色给出所有的具体策略类所需的接口。

weixin_45554007的博客 2548

FreeSWITCH实战:5分钟搞定阿里云SDM(MRCP-SERVER)语音机器人搭建(含Docker部署技巧)

本文详细介绍了如何利用FreeSWITCH与阿里云SDM(MRCP-SERVER)快速搭建高可用语音机器人,包括Docker部署技巧、系统调优及高可用架构设计。通过实战案例和优化建议,帮助开发者5分钟内完成部署,提升语音交互系统的性能和稳定性。

stone的博客 504

java设计模式之三大分类,六大原则

一.设计模式定义(Design Patterns) 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决

xqhadoop的博客 5100

Ubuntu24.04/20.04设置网络共享文件夹

Ubuntu20.04利用向日葵远程控制时,不能传输文件。使用linux版本QQ来传输是可以的,不过linuxqq功能真的很弱。因此,打算在Ubuntu系统中建立一个共享文件夹,可在局域网中访问。 1、新建共享文件夹 获取root权限,或者登陆root账户。可在/home文件夹(或其它文件夹)下新建一个文件夹,如share。 右击文件夹,选择“本地网络共享”菜单。按下图设置。 点击确定。如果系统已经安装了samba服务器,就可以进入第3步。如果没有,会提示安装,按提示安装,可能会出错,可进.

willhu2008的专栏 2万+

Nginx健康检查实战:如何用第三方模块提升服务可用性(附详细配置)

本文深入探讨了如何通过集成第三方健康检查模块来提升Nginx的服务可用性。文章对比了Nginx默认被动检查的局限性,并详细介绍了主动健康检查的核心优势、主流模块选型,以及以nginx_upstream_check_module为例的实战部署与配置指南,帮助运维人员构建更可靠的负载均衡架构。

weixin_28331555的博客 307

如何用java来打印半圆_如何画半圆 - java

我正在用Java开发一个小型应用程序。我正在使用Java2D库绘制一些图形对象。现在,我想绘制一些半圆形的形状,或者用简单的话来绘制(形状和)形状。我没有找到绘制半圆的任何功能,但我想Arc2D.Double(. . .);会为我工作,所以我尝试了一下,但我不明白我需要将哪些参数传递给其构造函数。所以我最终得到了一种奇怪的形状:(可以有人详细解释这些参数还是参考一些好的链接。参考方案绘制(Arc2...

weixin_36122351的博客 1175

YOLOv9改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 1364

设计模式——策略模式

策略模式:分别封装行为接口,实现算法族,超类里放行为接口对象,在子类里具体设定行为对象。原则就是:分离变化部分,封装接口,基于接口编程各种功能。此模式让行为算法的变化独立于算法的使用者。public abstract class Duck { FlyBehavior mFlyBehavior; QuackBehavior mQuackBehavior; public Duck

Misolamiso的博客 730

c# 如何使用S7NET 读取汇川H5U的数据

本文介绍了两种使用C#读取汇川H5U PLC数据的方法。第一种通过ModbusTCP协议(推荐),使用NModbus库实现,步骤包括配置PLC的Modbus服务器功能、安装库及编写读取保持寄存器的代码。第二种针对兼容西门子S7协议的型号,使用S7NetPlus库直接读取。文章强调需注意地址映射关系、协议配置及网络设置,并建议优先采用ModbusTCP方案以确保稳定性。两种方法均提供了完整的代码示例,帮助开发者快速实现在C#环境下与汇川H5U PLC的通信。

StevenChen的博客 456

华为OD机试真题2025双机位A卷 C++ 实现【采购订单】

在一个采购系统中,采购申请(PR)需要经过审批后才能生成采购订单(PO)。每个PR包含商品的单价(假设相同商品的单价一定是一样的)及数量信息。系统要求对商品进行分类处理:单价高于100元的商品需要单独处理,单价低于或等于100元的相同商品可以合并到同一采购订单PO中。针对单价低于100的小额订单,如果量大可以打折购买。

MISAYAONE的博客 673

设计模式之策略模式(Java实现)

文章目录前言一、认识策略模式二、实现策略模式2.1、 简单实现策略模式2.2、实际小案例实现策略模式总结参考资料 前言 本篇博客是关于策略模式的实现,若文章中出现相关问题,请指出! 对应代码地址:Gitee(demo-exer/ java-Lear23designpatterns)、Github(java-demo/ java-Lear23designpatterns) 所有博客文件目录索引:博客目录索引(持续更新) 一、认识策略模式 策略模式定义:定义了算法族,将其封装起来,让它们直接可以互相替换,此模式

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 3156

详解FreeRTOS:FreeRTOSConfig.h系统配置文件(拓展篇—1)

FreeRTOS的系统配置文件为FreeRTOSConfig.h,在配置文件中可以完成FreeRTOS的裁剪和配置,这是非常重要的一个文件,本篇博文就来讲解这个文件。

不脱发的程序猿 1546

浅谈java 23种设计模式之策略模式(Strategy Pattern)

策略模式(Strategy Pattern):    策略模式就是对于同一件事,拥有不同的对待方法。感觉上和模板方法模式有些相似,只不过模板方法会规定一个算法,子类去继承。策略模式会规定一件事,类似于Interface。举个简单的例子,类似于现在某网上商城的会员制,如果你是会员买东西时就可以享受折扣价,并每月可享受几次免邮,但是普通用户就只能原价并自己出邮费,针对不同的用户采取不同的策略。这样的场...

熊猫的博客 259

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

浅谈 java 设计模式--策略模式(Strategy pattern)

策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。策略模式通常把一系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。 何时使用策略模式: 1) 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态的让一个对象在许多行为中选择一种行为。 2) 如果系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法

ilovejava_2010的专栏 459

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

浅谈JAVA设计模式之策略模式

我们现实开发中,有很多地方需要用到不同的算法或者说不同的处理逻辑去处理相同的需求。比方说支付,支付会有支付宝支付、微信支付以及京东支付等等。再比方说订单折扣,会有现金返现折扣、优惠折扣以及团购折扣等等。每当出现一个新的逻辑,就需要多一个一段if…else…片段处理。策略模式就是为了解决上述这种逻辑分支多的问题。 策略模式的类结构图 首先我们来看一下策略模式的简单处理方式 public cla...

一个苦苦挣扎的JAVA开发 247

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

浅谈Java设计模式之---策略模式

浅谈Java设计模式之---策略模式   慢慢的喜欢上了优快云的博客。慢慢的喜欢上了优快云。大学毕业之前真后悔自己以前逛优快云逛的少, 不然真的可以学到好多东西的。作为刚刚入职的菜鸟我来说,要学的东西真的还好多好多。今天晚上就 关于Java设计模式的博大精深的地方开始扯淡。第一篇:策略模式 策略模式属于设计模式中的行为对象模式,主要是定义一系列算法,把每一个算法封装起来策略模式中分

caolipeng_918的专栏 743

浅谈JAVA设计模式之——策略模式(Strategy)

一、概述 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 二、适用性 1.许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 2.需要使用一个算法的不同变体。 3.算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。 4.一个类定义了多种行为,并且这些行为

冰河的专栏 3563

【Java设计模式】浅谈设计模式(三)之策略模式

一、策略模式概述       首先给出一个听起来官方的定义:策略模式将可变的部分从程序中抽象分离成算法接口,在该算法接口下分别封装一系列算法实现。       举一个实际的例子来说明:我们在网上购物支付的时候,会发现电商平台一般会提供各种各样的支付方式选择,用户只需要选择其中之一便可进行支付操作。       可以发现,上述例子中的支付算法便是抽象出来的算法接口,在这个接口里面封装了各种支付算法的实

qq_28869927的博客 1306

浅谈Java设计模式(十三)策略模式(strategy)

前言: 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,关系图如下: 图中ICalculator提供同意的方法, AbstractCalculator是辅助类,提供辅助方法,接下来,依次实现下每个类。

比较喜欢、笑的博客专栏 6940

浅谈Java设计模式——策略模式(Strategy)

  一、概述          定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。策略模式就是定义了算法族,分别封装起来,让他们之前可以互相转换,此模式然该算法的变化独立于使用算法的客户。在策略模式中它将这些解决问题的方法定义成一个算法群,每一个方法都对应着一个具体的算法,这里的一个算法我就称之为一个策略。虽然策略模式定义了算法,但是它并不...

IdealSpring的博客 508

java 策略模式缺点,浅谈策略模式的应用,ASP.NET,Java,设计模式-大喵多康BigMiao的学习笔记,博客,教程...

“面向对象编程”是对现实世界的抽象,是通过代码构建出一个虚拟的世界。在虚拟世界中有人、有物,这些人和物都被称为“对象”。虚拟世界中的对象与现实世界中的一样,人有姓名、性别、年龄等一系列属性,也有吃饭、如厕、睡眠等一系列行为。以下我通过一些真实世界中的事例,来介绍如何使用面向对象的思想来构建一个虚拟世界中的行为,并且通过“策略模式”来实现这一行为。如上图所示,这是我们在现实世界中经常发生的行为,男士...

weixin_33739480的博客 190

浅谈设计模式之策略模式

策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 介绍 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况...

Devil_May_Cry1995的博客 198

浅谈设计模式——策略模式

1、策略模式 **定义:**定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。此模式让算法的变化独立于使用算法的客户。 类图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pyp76E14-1586506012969)(设计模式.assets/image-20200410152738286.png)] 介绍 **意图:**定义一系列的算法,把它们一个个...

weixin_41992670的博客 209

浅谈设计模式-策略模式

策略模式本质:分离算法,选择性实现

langfeiyes的博客 325

浅谈设计模式

设计模式就是面对一些问题的最佳解决方案。众多软件开发人员在软件的开发过程中面临一些常见问题给出的解决方案,经过长期的验证和总结修正,形成了相对比较固定并且具有广泛适用性的解决模式。设计模式主要是为了提高代码的重用性、让代码跟容易理解、保证代码的可靠性。设计模式的原则是面向接口编程而不是面向实现编程,优先使用组合对象而不是继承,尽可能复用已有类和对象。设计模式是在代码实践过程中总结出来应对特定问题的最佳解决方案。这些模式可以帮助开发者实现代码的复用、解耦和易于理解。

wlphlj的专栏 1700
上一篇: 浅谈Java设计模式之代理模式
下一篇: 浅谈Java动态代理
program_god
博客等级 码龄12年 2粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值