当前位置: 首页 > news >正文

c#代码介绍23种设计模式_20策略者模式

目录

1、策略模式的定义

2、策略模式的结构

3、涉及到三个角色:

4、策略者模式在.NET中应用

5、策略者模式的适用场景

6、策略者模式的优缺点

7、实现思路


在现实生活中,策略模式的例子也非常常见,例如,中国的所得税,分为企业所得税、外商投资企业或外商企业所得税和个人所得税,
针对于这3种所得税,针对每种,所计算的方式不同,个人所得税有个人所得税的计算方式,而企业所得税有其对应计算方式。
如果不采用策略模式来实现这样一个需求的话,可能我们会定义一个所得税类,该类有一个属性来标识所得税的类型,
并且有一个计算税收的CalculateTax()方法,在该方法体内需要对税收类型进行判断,通过if-else语句来针对不同的税收类型来计算其所得税。
这样的实现确实可以解决这个场景吗,但是这样的设计不利于扩展,如果系统后期需要增加一种所得税时,此时不得不回去修改CalculateTax方法来多添加一个判断语句,
这样明白违背了“开放——封闭”原则。此时,我们可以考虑使用策略模式来解决这个问题,既然税收方法是这个场景中的变化部分,此时自然可以想到对税收方法进行抽象

1、策略模式的定义

策略模式是针对一组算法,将每个算法封装到具有公共接口的独立的类中,从而使它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化
策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象

2、策略模式的结构

策略模式是对算法的包装&#x

相关文章:

c#代码介绍23种设计模式_20策略者模式

目录 1、策略模式的定义 2、策略模式的结构 3、涉及到三个角色: 4、策略者模式在.NET中应用 5、策略者模式的适用场景 6、策略者模式的优缺点 7、实现思路 在现实生活中,策略模式的例子也非常常见,例如,中国的所得税,分为企业所得税、外商投资企业或外商企业所得税…...

FPGA-UART串口接收模块的理解

UART串口接收模块 背景 在之前就有写过关于串口模块的文章——《串口RS232的学习》。工作后很多项目都会用到串口模块,又来重新理解一下FPGA串口接收的代码思路。 关于串口相关的参数,以及在文章《串口RS232的学习》中已有详细的描述,这里就…...

复习HTML(基础)

目录 HTML含义 HTML作用 HTML的常用元素 元素的特点 元素的分类 1 是否嵌套关系 2 是否独占一行 块元素:独占一行 行内元素:共享一行 行内元素与块级元素的转换 3是否有结束标签 常用标签 1 标题标签:有六级 我们用h1 ~h6 表…...

Linux聊天集群开发之环境准备

一.windows下远程操作Linux 第一步:在Linux终端下配置openssh,输入netstate -tanp,查看ssh服务是否启动,默认端口22.。 注:如果openssh服务,则需下载。输入命令ps -e|grep ssh, 查看如否配有, ssh-agent …...

can 总线入门———can简介硬件电路

文章目录 0. 前言1. CAN简介2. 主流通讯协议对比3. CAN 硬件电路4. CAN 电平标准5. CAN 收发器 0. 前言 博客内容来自B站上CAN总线入门教程视频讲解,博客中的插图和内容均为视频中的内容。视频链接 CAN总线入门教程 1. CAN简介 先来看看一它名字的意思&#xff0c…...

【重学 MySQL】六十、空间类型

【重学 MySQL】六十、空间类型 空间数据类型的分类空间数据类型的属性空间数据的表示方式空间数据的操作应用场景 在MySQL中,空间类型(Spatial Types)主要用于支持地理特征的生成、存储和分析。这些地理特征可以表示世界上具有位置的任何东西…...

python实现DES算法

DES算法 一、算法介绍1.1 背景1.2 原理1.3 基本功能函数1.3.1 初始置换函数 I P IP IP1.3.2 f f f 轮函数1.3.3 逆初始置换函数 I P − 1 IP^{-1} IP−1 1.4 子密钥的生成 二、代码实现2.1 子密钥生成实现2.2 DES加解密实现2.3 完整代码 三、演示效果 一、算法介绍 1.1 背景…...

基于LORA的一主多从监测系统_框架搭建

第一节、框架搭建 打开CubeMAX,选择好芯片,进行基础配置 第一步、先配置时钟源 第二步、配置SYS选项 配置debug口以及计数器源,我这里选择TIM1 第三步、选择I2C接口 配置如下即可,默认配置不用改 第四步、串口选择 我们这里使…...

优化理论及应用精解【25】

文章目录 优化学习率调度1. 阶梯衰减(Step Decay)2. 余弦退火(Cosine Annealing)3. 多项式衰减(Polynomial Decay)4. 指数衰减(Exponential Decay)总结 梯度弥散效应 参考文献 优化 …...

贝锐蒲公英网盘首发,秒建私有云,高速远程访问

虽然公共网盘带来了不少便利,但是大家对隐私泄露和重要数据泄密的担忧也随之增加。如果想要确保数据安全,自建私有云似乎是一条出路,然而面对搭建私有云的复杂步骤,许多人感到力不从心,NAS设备的成本也往往让人望而却步…...

[ 蓝桥 ·算法双周赛 ] 第 19 场 小白入门赛

&#x1f525;博客介绍&#xff1a; EvLast &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 帮助小白快速入门算法竞赛 &#x1f44d…...

HTML+CSS基础 第二季课堂笔记

一、列表 列表都不是单打独斗的&#xff0c;通常都是一组标签组成 1 无序列表 作用&#xff1a;定义一个没有顺序的列表结构 由两个标签组成&#xff0c;ul&#xff08;容器级标签&#xff09;&#xff0c;li&#xff08;容器级&#xff09; ul&#xff1a;英文ulordered …...

【Easy RL】Easy RL蘑菇书全书学习笔记

【Easy RL】Easy RL蘑菇书全书学习笔记 第一章 强化学习基础1.1 强化学习概述监督学习强化学习与监督学习的不同之处二者的区别总结强化学习的特征强化学习的优越性预演&#xff08;rollout&#xff09;和 轨迹&#xff08;trajectory&#xff09;的概念端到端的概念深度强化学…...

JavaWeb(二)

Servlet开发技术 [外链图片转存中…(img-Cnu8X2V4-1728026684827)] 简述Servlet的创建过程&#xff1f; package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; …...

【C++】--类和对象(2)

&#x1f44c;个人主页: 起名字真南 &#x1f446;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 类的默认成员函数2 构造函数3 析构函数4 拷贝构造5 赋值运算符重载5.1 运算符重载5.2 赋值运算符的重载 1 类的默认成员函数 默认成员函数就是用户没有显示实现&#xff0c;…...

最新BurpSuite2024.9专业中英文开箱即用版下载

1、工具介绍 本版本更新介绍 此版本对 Burp Intruder 进行了重大改进&#xff0c;包括自定义 Bambda HTTP 匹配和替换规则以及对扫描 SOAP 端点的支持。我们还进行了其他改进和错误修复。 Burp Intruder 的精简布局我们对 Burp Intruder 进行了重大升级。现在&#xff0c;您可…...

C++ 观察者模式

观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;用于在对象之间建立一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;它的所有依赖对象都会得到通知并自动更新。 在观察者模式中&#xff0c;主题和观察者之间是松耦合…...

基于pytorch的手写数字识别-训练+使用

import pandas as pd import numpy as np import torch import matplotlib import matplotlib.pyplot as plt from torch.utils.data import TensorDataset, DataLoadermatplotlib.use(tkAgg)# 设置图形配置 config {"font.family": serif,"mathtext.fontset&q…...

SpringBoot接收前端传递参数

1&#xff09;URL 参数 参数直接 拼接在URL的后面&#xff0c;使用 ? 进行分隔&#xff0c;多个参数之间用 & 符号分隔。例如&#xff1a;http://localhost:8080/user?namezhangsan&id1后端接收&#xff08;在Controller方法的参数列表中使用 RequestParam 注解&…...

【LeetCode周赛】第 418 场

3309. 连接二进制表示可形成的最大数值 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接 数组 nums 中所有元素的 二进制表示 &#xff0c;请你返回可以由这种方法形成的 最大 数值。 注意 任何数字的二进制表示 不含 前导零 思路&#xff1a;暴力枚举 class Soluti…...

【仅剩217份】《Midjourney后印象派风格白皮书》V2.3——含17位艺术家专属LoRA适配建议、32组跨文化色彩映射表及实时风格强度校准工具(2024.06内部封测版)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;后印象派风格的视觉基因与Midjourney语义解码 后印象派并非对自然的模仿&#xff0c;而是对色彩、结构与主观情绪的系统性重构——梵高旋转的星云、塞尚凝固的苹果、高更平面化的塔希提图腾&#xff0c…...

g1810,g3810,ip2700,g5080,g1800,ts3380,TS8380,ts6480报错5B00,P07,E08,5b02,1704,1700,5b04,佳能v6.200,亲测有用。

下载&#xff1a;点这里下载 备用下载&#xff1a;https://pan.baidu.com/s/1WrPFvdV8sq-qI3_NgO2EvA?pwd0000 常见型号如下&#xff1a; G系列 G1000、G1100、G1200、G1400、G1500、G1800、G1900、G1010、G1110、G1120、G1410、G1420、G1411、G1510、G1520、G1810、G1820、…...

用STM32+LoRa+阿里云IoT Studio,我DIY了一个低成本畜牧电子围栏(附完整代码)

基于STM32与LoRa的智能畜牧围栏系统开发实战 在广袤的牧区&#xff0c;牲畜走失一直是困扰牧民的核心问题。传统物理围栏不仅成本高昂&#xff0c;在草原这类开放地形中实施难度也很大。本文将详细介绍如何利用STM32微控制器、LoRa远距离通信模块和阿里云IoT Studio平台&#x…...

AI原生编程语言Reia:为LLM设计的编程范式变革

1. 项目概述&#xff1a;Reia&#xff0c;一个面向未来的AI原生编程语言最近在AI和编程语言交叉领域&#xff0c;一个名为Reia的项目引起了我的注意。它来自Quaint-Studios&#xff0c;定位是“AI原生”的编程语言。这听起来有点抽象&#xff0c;但简单来说&#xff0c;Reia试图…...

MPLAB代码配置器实战:图形化配置PIC/AVR单片机外设,提升开发效率

1. 项目概述&#xff1a;为什么你需要关注MPLAB代码配置器如果你正在使用Microchip的PIC或AVR单片机&#xff0c;并且还在手动编写外设初始化代码、一遍遍翻阅数据手册核对寄存器位&#xff0c;那今天聊的这个工具&#xff0c;可能会让你有种“相见恨晚”的感觉。我说的就是MPL…...

告别命令行启动!在Ubuntu 20.04上为Clion创建桌面快捷方式的保姆级教程

告别命令行启动&#xff01;在Ubuntu 20.04上为Clion创建桌面快捷方式的保姆级教程 每次打开Clion都要在终端输入./clion.sh&#xff1f;作为从Windows转战Linux的开发者&#xff0c;这种操作简直让人抓狂。本文将彻底解决这个痛点&#xff0c;手把手教你用.desktop文件创建专业…...

AI智能体可观测性实战:用AgentOps实现全链路追踪与性能优化

1. 项目概述&#xff1a;当AI智能体遇上“黑匣子”&#xff0c;我们如何看清它的每一步&#xff1f;如果你最近在折腾AI智能体&#xff08;Agent&#xff09;&#xff0c;无论是用LangChain、AutoGPT还是自己手搓的框架&#xff0c;大概率会遇到一个共同的痛点&#xff1a;调试…...

开源监控自动化平台openclaw-lighthouse:从告警到自愈的智能运维实践

1. 项目概述&#xff1a;一个开源的“灯塔”式监控与自动化平台最近在梳理团队内部的监控和自动化工具链时&#xff0c;发现了一个挺有意思的开源项目&#xff0c;叫openclaw-lighthouse。这个名字本身就很有画面感&#xff0c;“openclaw”是开放的爪子&#xff0c;象征着抓取…...

Linux驱动开发:原子操作实现LED设备互斥访问

1. 项目概述&#xff1a;用原子操作给LED驱动加把“锁”在嵌入式Linux开发里&#xff0c;驱动开发是绕不开的一环。很多时候&#xff0c;一个硬件设备&#xff0c;比如一个简单的LED灯&#xff0c;可能会被多个用户空间的应用程序同时访问。想象一下&#xff0c;一个APP想开灯&…...

芯片/半导体/CPO光模块 深度分析报告

芯片/半导体/CPO光模块 深度分析报告报告生成时间&#xff1a;2026年5月16日 分析标的&#xff1a;芯片半导体板块 CPO光模块产业链 龙头标的&#xff1a;中际旭创(300308)、天孚通信(300394)、新易盛(300502)、寒武纪(688256)、海光信息(688041) 数据来源&#xff1a;公开市场…...