.NET高级面试指南专题十七【 策略模式模式介绍,允许在运行时选择算法的行为】

介绍:
策略模式是一种行为设计模式,它允许在运行时选择算法的行为。它定义了一系列算法,将每个算法封装到一个对象中,并使它们可以互相替换。这使得算法可独立于使用它的客户端变化。
原理:
策略接口(Strategy Interface):定义一组算法的接口。
具体策略类(Concrete Strategy Classes):实现策略接口的具体算法。
上下文类(Context Class):维护一个对策略对象的引用,并在运行时选择所需的具体策略。
优点:
灵活性: 能够在运行时动态地改变对象的行为。
可扩展性: 容易增加新的算法或策略。
复用性: 可以复用现有的算法,不需要重复实现。
缺点:
增加对象数量:每个具体策略都会创建一个对象,可能会导致类的数量增加。
客户端必须知道策略:客户端需要了解不同的策略,以便选择正确的策略。
代码示例
using System;// 策略接口
interface IStrategy
{void Execute();
}// 具体策略类A
class ConcreteStrategyA : IStrategy
{public void Execute(){Console.WriteLine("Executing strategy A");}
}// 具体策略类B
class ConcreteStrategyB : IStrategy
{public void Execute(){Console.WriteLine("Executing strategy B");}
}// 上下文类
class Context
{private IStrategy _strategy;public Context(IStrategy strategy){_strategy = strategy;}public void SetStrategy(IStrategy strategy){_strategy = strategy;}public void ExecuteStrategy(){_strategy.Execute();}
}class Program
{static void Main(string[] args){// 创建上下文对象Context context = new Context(new ConcreteStrategyA());// 执行策略Acontext.ExecuteStrategy();// 切换到策略Bcontext.SetStrategy(new ConcreteStrategyB());// 执行策略Bcontext.ExecuteStrategy();}
}
相关文章:
.NET高级面试指南专题十七【 策略模式模式介绍,允许在运行时选择算法的行为】
介绍: 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。它定义了一系列算法,将每个算法封装到一个对象中,并使它们可以互相替换。这使得算法可独立于使用它的客户端变化。 原理: 策略接口(Strat…...
突飞猛进,智能饮品机器人如何助力实体经济?
近日,财务部公布了2024年第一季度及全年财报。数据显示,连锁品牌增长速度惊人,这其中不得不提到智能饮品机器人的使用,为不同的品牌门店拼速度、抢点位立下了不小的功劳,那么智能饮品机器人到底如何助力各门店…...
AI:150-基于深度学习的医学数据挖掘与病症关联发现
🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…...
c语言:最大公约数
最大公约数 任务描述 最大公约数(也称最大公因数、最大公因子),指两个或多个整数共有约数中最大的一个。 编程输入两个正整数,输出它们的最大公约数。 输入示例 36 24输出示例 12代码 方法1:辗转相除法 #inclu…...
12 对称加密AES和非对称加密RSA
文章目录 一、对称加密算法AES1. AES简介2. AES代码 二、非对称加密RSA1. RSA简介2. 生成公钥私钥3. RSA代码 一、对称加密算法AES 1. AES简介 对称加密算法AES是目前广泛使用的一种加密技术,它采用相同的密钥来进行数据的加密和解密。 AES的优点 高效性&#x…...
Vue2(二):计算属性、监视属性、二者的区别
一、计算属性 1. 使用插值语法和methods拼接姓名 如果样式要求不多的话这样写没问题,如下代码是截取我输入的姓的前三个字母 <div id"root">姓:<input type"text" v-moudel"firstName">名:<…...
CTF题型 SSTI(2) Flask-SSTI典型题巩固
CTF题型 SSTI(2) Flask-SSTI典型题巩固 文章目录 CTF题型 SSTI(2) Flask-SSTI典型题巩固前记1.klf__sstiSSTI_Fuzz字典(网上收集自己补充) 2.klf_2数字问题如何解决了?|count |length都被禁? 3.klf_3 前记 从基础到自己构造paylo…...
计算机设计大赛 题目: 基于深度学习的疲劳驾驶检测 深度学习
文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 🔥 优…...
小字辈[天梯赛]
文章目录 题目描述思路AC代码 题目描述 思路 深度优先搜索 具体流程 1.读入每个人的祖先,标记辈分最高的老祖宗对应的下标pos 2.从pos开始dfs,每次判断当前遍历的深度,如果>原来的深度,更新,并将存储最小辈分的数组…...
Linux常用操作命令、端口、防火墙、磁盘与内存
目录 1.Linux常用操作命令 1.1 基本命令 1.2 高级命令 2.Linux防火墙 2.1 iptables 2.2 firewalld 3.Linux端口号 3.1 netstat(查看网络连接) 3.2 lsof(查找占用端口的进程) 3.3 ps(查看进程服务路径&#x…...
<JavaEE> 了解网络层协议 -- IP协议
目录 初识IP协议 什么是IP协议? IP协议中的基础概念 IP协议格式 图示 4bit版本号(version) 4bit头部长度(headerlength) 8bit服务类型(TypeOfService) 16bit总长度(total l…...
【安全类书籍-2】Web渗透测试:使用Kali Linux
目录 内容简介 作用 下载地址 内容简介 书籍的主要内容是指导读者如何运用Kali Linux这一专业的渗透测试平台对Web应用程序进行全面的安全测试。作者们从攻击者的视角出发,详细阐述了渗透测试的基本概念和技术,以及如何配置Kali Linux以适应渗透测试需求。书中不仅教授读者…...
ubuntu10.04 apache2.2开启tls1.2的支持,使现代的edge和firefox浏览器能正常访问https
最近发现自己ubuntu10.04服务器上的apache https无法通过win11上的edge和firefox浏览器访问,但xp下的ie6和ie8没有问题。 firefox的错误提示为“此网站可能不支持TLS 1.2协议,而这是Firefox支持的最低版本”。 经过检查发现: IE6访问https所需的版本是SS…...
算法学习(持续更新中)
学习视频:一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵)_哔哩哔哩_bilibili 时间复杂度 一个操…...
蓝桥杯 2023 省B 飞机降落
首先,这题要求的数据量比较少,我们可以考虑考虑暴力解法。 这题可能难在很多情况的考虑,比如说: 现在时间是10,有个飞机20才到,我们是可以干等10分钟。 #include <iostream> #include <…...
基于python的变配电室运行状态评估与预警系统flask-django-nodejs-php
近年来,随着我国工业化、城镇化步伐的不断加快,城市配电网络取得令人瞩目的发展成果。变配电室是供配电系统的核心,在供配电系统中占有特殊的重要地位[1]。变配电室电气设备运行状态和环境信息缺乏必要的监测评估预警手段,如有一日遭遇突发情…...
el-table左键双击单元格编辑内容(输入框输入计算公式可直接得出结果),右键单击展示操作菜单,可编辑单元格高亮展示
vue2点击左侧的树节点(el-tree)定位到对应右侧树形表格(el-table)的位置,树形表格懒加载 表格代码 <el-table ref"singleTable" :data"detailsList" highlight-current-row"" row-key"detailId"…...
实现HBase表和RDB表的转化(附Java源码资源)
实现HBase表和RDB表的转化 一、引入 转化为HBase表的三大来源:RDB Table、Client API、Files 如何构造通用性的代码模板实现向HBase表的转换,是一个值得考虑的问题。这篇文章着重讲解RDB表向HBase表的转换。 首先,我们需要分别构造rdb和hba…...
10:00面试,10:06就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
【Python】: Django Web开发实战(详细教程)
Python Django全面介绍 Django是一个非常强大的Python Web开发框架,它以"快速开发"和"干净、实用的设计"为设计宗旨。本文将从Django的基本概念开始,逐渐引导大家理解如何使用Django构建复杂的web应用程序。 Django基本概念与原理…...
【LeetCode刷题日记】:字符串替换技巧揭秘
🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...
别再死磕公式了!用MATLAB手把手复现DIC中的FA-GN与IC-GN算法(附完整代码)
MATLAB实战:从零实现DIC中的FA-GN与IC-GN算法 在材料力学、生物医学等领域的变形测量中,数字图像相关技术(Digital Image Correlation, DIC)已成为不可或缺的工具。但对于初学者而言,如何将复杂的数学公式转化为可运行…...
AGI监管倒计时:2026奇点大会披露的3类高危法律风险及5步应急响应清单
第一章:2026奇点智能技术大会:AGI的法律框架 2026奇点智能技术大会(https://ml-summit.org) 全球AGI治理共识的里程碑 2026奇点智能技术大会首次将通用人工智能(AGI)的法律人格认定、责任归属与跨境监管协同列为最高优先议程。来…...
Logisim搭建16位比较器翻车实录:从四个4位模块到最终调试成功的避坑指南
Logisim搭建16位比较器翻车实录:从四个4位模块到最终调试成功的避坑指南 当你信心满满地将四个4位比较器模块拼接成16位版本时,电路图上那些010状态码突然变得像摩尔斯电码一样难以破译。这不是简单的拼积木游戏——每个中间状态都暗藏玄机,高…...
保姆级教程:用Cesium.js 1.107+ 加载ArcGIS Server发布的WMTS地图(附完整代码)
从零实现Cesium与ArcGIS WMTS地图集成:2023终极实践指南 第一次打开Cesium的官方示例时,那个缓缓旋转的蓝色星球总让人有种造物主般的兴奋。但当你真正需要把业务地图投射到这个数字地球上时,现实往往比想象复杂得多——特别是当数据源来自企…...
手把手教你用ODrive GUI校准电机:避开电阻电感测量中的那些坑
手把手教你用ODrive GUI校准电机:避开电阻电感测量中的那些坑 电机校准是使用ODrive驱动板时最关键的步骤之一,但很多开发者在实际操作中都会遇到各种问题——电机发出刺耳的啸叫声、校准进度条卡住不动、测量结果明显偏离正常范围。这些问题往往源于对…...
房屋租赁管理|基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
房屋租赁管理系统 目录 基于springboot vue房屋租赁管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue房屋租赁管理系统 一、前言 博主介绍&am…...
用STC89C52单片机+收发一体探头,从零DIY一个超声波测距仪(附完整代码和PCB)
从零打造超声波测距仪:STC89C52实战指南 引言 记得第一次接触超声波测距是在大学电子设计竞赛上,看着简单的探头能精确测量距离,那种神奇感至今难忘。如今超声波技术已广泛应用于倒车雷达、工业检测等领域,但自己动手做一个测距仪…...
ComfyUI-Impact-Pack完整指南:AI图像细节增强的终极解决方案
ComfyUI-Impact-Pack完整指南:AI图像细节增强的终极解决方案 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址: ht…...
从靶场到实战:聊聊RCE漏洞那些“花式”绕过姿势(以CTFHUB为例)
RCE漏洞对抗艺术:从基础绕过到高级利用实战 引子:当安全防线遇上创造力 在网络安全的世界里,远程代码执行(RCE)漏洞就像一把双刃剑——它既是攻击者梦寐以求的终极武器,也是防御者必须严防死守的最后防线。不同于简单的SQL注入或X…...
