设计模式学习笔记七:策略模式

java23种设计模式-策略模式 策略模式是一种行为型设计模式,定义一系列算法,将每个算法封装起来,并使它们可以互相替换。该模式让算法的变化独立于使用它的客户端。 阅读详情

策略模式,它主要的作用是封装算法,是一种行为模式。

有三种角色:

1、具体算法角色:具体的算法的实现;

2、抽象策略角色:抽象类或接口,提供具体算法角色的抽象;

3、上下文角色:实现对具体算法角色的引用。

更详细定义参照:策略模式。


代码时间:


1、具体实现:

package com.array7.strategy;

public class Run
{
	public static void main(String[] args)
	{
		new Context(new Strategy1()).execute();
		new Context(new Strategy2()).execute();
		new Context(new Strategy3()).execute();
	}
}

2、具体算法策略:

package com.array7.strategy;

public class Strategy1 implements IStrategy {

	@Override
	public void execute() {
		System.out.println("stargtegy1.execute...");
	}

}

package com.array7.strategy;

public class Strategy2 implements IStrategy {

	@Override
	public void execute() {
		System.out.println("stargtegy2.execute...");
	}

}

package com.array7.strategy;

public class Strategy3 implements IStrategy {

	@Override
	public void execute() {
		System.out.println("stargtegy3.execute...");
	}

}


3、抽象接口:

package com.array7.strategy;

public interface IStrategy {
	void execute();
}

3、策略引用:

package com.array7.strategy;

public class Context {
	private IStrategy strategy;
	
	public Context(IStrategy strategy)
	{
		this.strategy = strategy;
	}
	public void execute() {
		this.strategy.execute();
	}
}


面向对象设计模式学习笔记四策略模式 为什么需要策略模式 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。   举例说明 税法计算案例: 程序员要有一个时间轴的概念,不能静态的看待问题。 如果增加对法国的税法,则需要更改代码,重新编译、部署 违背了开放封闭原则:对更改封闭,对扩展开放 enum TaxBase... 阅读详情

相关推荐

保姆级教程:在RK3588开发板上用CMake交叉编译ZLMediaKit(附完整toolchain配置)

本文提供了一份详细的RK3588开发板上使用CMake交叉编译ZLMediaKit的教程,包括完整的toolchain配置和实战避坑指南。从环境准备、工具链配置到依赖处理、编译部署,手把手指导开发者完成ARM64架构的流媒体服务搭建,特别适合嵌入式开发新手。

weixin_28681255的博客 384

Arrays的Comparator:策略

根据传入的排序算法决定排序方式: 排序接口: 用匿名内部类、实现类、Lambda方式实现接口,传入sort方法

九 248

Balser相机的硬件触发实战:从连线到信号处理

本文详细介绍了Balser相机硬件触发的实战应用,从硬件接线、信号定义到软件配置(Pylon Viewer及API)提供了完整指南。重点阐述了如何利用外部物理电信号实现微秒级精准触发,解决工业场景下的同步与延迟问题,并分享了信号调理、抗干扰等高级实战经验。

y9z0a1b的博客 339

各种主机部署故障转移Failover的详细配置

https://community.emc.com/docs/DOC-20881 AIX ...

cs309086543的博客 1006

RustFS vs MinIO:深入对比分布式存储的性能、功能与选型指南

RustFS与MinIO是两款热门分布式存储系统,分别针对高性能与通用场景设计。RustFS基于Rust语言,在吞吐量(最高提升46%)、延迟(降低37%)和资源效率(内存占用减少67%)上显著优于MinIO,适合AI训练、金融级应用等高性能需求。MinIO凭借成熟的S3兼容性、云原生集成和企业级功能,更适用于混合云及现有S3生态。许可方面,RustFS采用Apache 2.0,MinIO为AGPLv3。选型建议:优先RustFS应对性能敏感场景,选择MinIO注重生态兼容性,也可考虑混合架构策略。

分布式存储与RustFS的博客 2024

公文派2025:免费社区版重大安装更新!

距离上一次更新已经过去了将近一年的时间,今天我们带来了全新的免费2025社区版,该版本也是目前最新的版本,无需授权即可使用所有的功能。

似最初 1964

Ribbon 负载均衡策略配置

文章目录Ribbon 的负载均衡策略全局策略设置增加 Ribbon 负载均衡策略配置类基于注解的针对单个服务的 Ribbon 负载均衡策略注解方式配置文件方式   这个负载策略配置说白了就是让 Ribbon 这个客户端负载均衡器怎么进行访问服务提供者列表。是轮流访问?随机访问?权重?等。 Ribbon 的负载均衡策略 策略类 命名 说明 RandomRule 随机策略 随机选择 S...

大漠知秋的加油站 1万+

给硬件工程师的UCIe软件配置入门:从寄存器表到实战调试,一篇讲透

本文为硬件工程师提供UCIe软件配置的全面指南,从寄存器表解析到实战调试技巧,涵盖链路训练、错误排查等关键环节。通过详细代码示例和分层诊断法,帮助工程师快速掌握UCIe寄存器访问机制,提升异构集成开发效率。

weixin_30268921的博客 313

HeadFirst 设计模式学习笔记1--策略模式

本文已搬家至【HeadFirst 设计模式学习笔记】1.策略模式

gnuhpc的专栏 5780

java写一个多人线上聊天室

课程作业谔谔

weixin_51614848的博客 1136

Tessent ATPG Flow 流程 (代码和注释)

**摘要:Tessent ATPG流程分为五个阶段:1) 环境初始化(加载设计文件、库和扫描链配置);2) DRC规则检查(验证设计可测试性并修复违例);3) ATPG向量生成(设置故障模型并运行引擎优化覆盖率);4) 向量验证与后处理(仿真验证并生成ATE格式文件);5) 进阶操作(多电压域和存储器测试)。流程输出包括测试向量、覆盖率报告和验证日志,支持stuck-at和transition故障模型,使用Tcl脚本控制。关键步骤包含扫描链配置、EDT压缩和覆盖率优化。

QQ_778132974的博客 934

设计模式DesignPattern【1】

设计模式是对于反复出现的问题的解决方案,是关于如何解决某些问题的指南。它们不是可以插入应用程序中的类、包或库。相反,这些是关于如何在某些情况下解决某些问题的指导方针,是一种思想方面的东西。设计模式是软件设计中常见问题的典型解决方案。它们就像预制的蓝图,你可以对其进行自定义以解决代码中反复出现的设计问题。

2301_80272161的博客 1108

PCL 三维重建 泊松曲面重建算法

本文介绍了基于泊松曲面重建算法的三维重建过程。泊松重建是一种利用点云数据生成三维表面的算法,它基于点云的法线估计和泊松方程的求解,能够生成光滑且连续的曲面模型。该方法适用于复杂形状和细节的表面重建。

纵马踏花向自由 1090

设计模式之一:策略模式

《Head First设计模式》第一章学习笔记 一、OO基础:   抽象、  封装、  多态、  继承 二、OO原则: 1、封装变化      1)找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。   换句话说:把会变化的部分取出并封装起来,以便以后可以轻易的改动或扩充此部分,而不影响不需要变化的其他部分。      2)所有的模式都提供了一套方法,

caihaijiang的专栏 1997

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

设计模式一之策略模式学习笔记

设计模式一 之 策略模式 学习笔记需求开始设计设计1最终设计 阅读《Head First设计模式》来学习设计模式,以下代码都是书中的例子,通过不断的优化代码来达到学习的目的。《Head First设计模式》中的完整的代码的例子都可以在https://www.wickedlysmart.com/head-first-design-patterns/下载到。 看书是学习的一种方式,写博客是巩固学...

wangchenghao的博客 311

假人有限元模型

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

设计模式学习笔记——策略模式

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

Stephen 266

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

图说设计模式:策略模式

策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。在策略模式中定义了一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式。策略模式是一种对象行为型模式。策略模式包含三个角色:环境类在解决某个问题时可以采用多种策略,在环境类中维护一个对抽象策略类的引用实例;

cf18862344377的博客 1036

策略模式与责任链模式学习笔记:从入门到理解

策略模式与责任链模式学习笔记 策略模式和责任链模式都是常用的行为型设计模式,但适用场景不同。策略模式通过封装不同算法,允许运行时动态切换(如电商促销活动);责任链模式则将请求沿处理链传递,直至被处理(如审批流程)。策略模式强调算法替换,责任链模式侧重请求传递。学习时建议结合生活案例(如出行方式/审批流程)和代码示例理解其差异,掌握何时选择何种模式。

m0_63949203的博客 1483

设计模式学习笔记(二)工厂模式、模板模式和策略模式的混合使用

一、工厂模式(Factory pattern) 工厂模式又叫做工厂方法模式,是一种创建型设计模式,一般是在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。 1.1 工厂模式介绍 工厂模式是Java 中比较常见的一种设计模式,实现方法是定义一个统一创建对象的接口,让其子类自己决定去实例化那个工厂类,解决不同条件下创建不同实例的问题。工厂方法模式在实际使用时会和其他的设计模式一起结合,而不是单独使用。比如在Lottery 项目中奖品的发放就是工厂+模板+策略模式。 1.2 工厂模式实现 举个例子,比

hello_1566的博客 4148

学习笔记——C++设计模式之策略模式

C++设计模式之策略模式 _学习B站李建忠老师课程记录 动机: 1.在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使得对象变得异常复杂;而且有时候支持不使用的算法也是一种性能负担。 2.如何在运行时根据需要透明地更改对象的算法? 将本算法与对象本身解耦合,从而避免上述问题? 模式定义: 定义一系列算法,把它们一个个封装起来,并且使它们可以互相替换(变化),该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。-GoF 重构前代码 税率计算举例:

qq_39451510的博客 221

Golang学习笔记_39——策略模式

策略模式是一种行为型设计模式,通过定义一系列可互换的算法,并将其封装为独立类,使得算法可以独立于客户端而变化。核心思想是将算法与使用场景解耦,支持运行时动态切换策略。策略模式通过算法封装和动态切换灵活扩展:新增策略无需修改上下文代码复用:相同策略可被多个客户端共享条件简化:消除复杂的if-else分支通过接口实现多态,而非继承使用工厂模式管理策略实例组合策略实现复杂算法叠加避免策略类过度细分(如差异过小的策略合并)

LuckyLay的博客 1531

设计模式学习笔记:策略模式(Strategy)

文章目录一、策略模式介绍二、代码示例1、需求场景2、实现2.1 不使用策略模式的实现方式2.2 使用策略模式的实现方式2.3 测试 总之岁月漫长,然而值得等待。 ​ ——春上春树 一、策略模式介绍 策略模式是设计模式中行为模式的一种。它提供了在运行中改变一个类的行为的方法。 如下图,用户选择合适的策略去创建策略的使用者: 二、代码示例 1、需求场景 现在有一个需求:用户在支付的时候可以选择不同的支付方式,要求后续可以方便的增加新的支付方式。 2、实现 2.1 不使用策略模式

爱辰 449

设计模式学习笔记--策略模式(Strategy Pattern)

设计模式第一弹,发现在继续深入学习Java相关知识前,很有必要学习下设计模式,其中几个比较重要的设计模式其实在之前的使用中已经出现过很多次,但是由于没有学过设计模式,也就知其然不知其所以然的拿来用了,所以接下来准备好好整理学习设计模式,博客整理的内容均来自《Head First 设计模式》。下面开始整理第一个设计模式–策略模式1.定义策略模式:定义了算法簇,分别封装起来,让它们之前可以互相替换,此模

classTC的博客 1283

C#设计模式学习笔记:(19)策略模式

本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8057654.html,记录一下学习过程以备后续查用。 一、引言 今天我们要讲行为型设计模式的第七个模式–策略模式。在现实生活中,策略模式的例子也非常常见,例如:在一个公司中,会有各种工作人员:有普 通员工、有软件架构师、有部门经理,当然也有公司的CEO等等。这些工作人员负责的工作不同、担负的职责也不同,报酬也各不相同。 每种工作人员都有自己的工资,但是不同工种其工资的计算方式是不一样的。如果不采用策略模式来实现这个

chinaherolts2008的博客 190

设计模式学习笔记--策略模式

定义: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 我们在使用一些功能时,有时有很多种实现方法,或者多种结果,但是都有同样的使用方法,即调用接口,这就是策略模式。 例子: // 设计模式Demo.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #in

puppet_master的专栏 1126
上一篇: 开源项目源码阅读版本选择
下一篇: ubuntu 15.04 手动安装nginx 1.9.0
七郎
博客等级 码龄14年 31粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值