二、大话设计模式 之 策略模式

大疆司空 2 私有化部署:FH2、Terra、4G 三大服务区别详解 摘要: 司空2私有版包含三大模块:FH2(核心平台,必选)、Terra(建模算力,需NVIDIA显卡)、4G(内网图传)。FH2是基础,支持设备管理与任务调度;Terra适用于测绘建模场景,依赖GPU算力;4G模块保障复杂环境下的图传稳定性,适合纯内网部署。选择逻辑:先部署FH2,再按需添加Terra(需显卡)或4G(需内网支持),避免资源浪费。 阅读详情
模式特点:定义算法家族并且分别封装,它们之间可以相互替换而不影响客户端。

程序实例:商场收银软件,需要根据不同的销售策略方式进行收费

package main

import (
"fmt"
)

type cashSuper interface {
AcceptCash(float64) float64
}

type cashNormal struct {
}

func (normal *cashNormal) AcceptCash(money float64) float64 {
return money
}

type cashRebate struct {
moneyRebate float64
}

func (rebate *cashRebate) AcceptCash(money float64) float64 {
return money * rebate.moneyRebate
}

type cashReturn struct {
moneyCondition float64
moneyReturn float64
}

func (returned *cashReturn) AcceptCash(money float64) float64 {
if money >= returned.moneyCondition {
return money - float64(int(money/returned.moneyCondition))*returned.moneyReturn
} else {
return money
}
}

type CashContext struct {
cashSuper
}

func NewCashContext(str string) *CashContext {
cash := new(CashContext)
switch str {
case"正常收费":
cash.cashSuper = &cashNormal{}
case"满300返100":
cash.cashSuper = &cashReturn{300, 100}
case"打8折":
cash.cashSuper = &cashRebate{0.8}
}
return cash
}

func main() {
var total float64
context := NewCashContext("满300返100")
total += context.AcceptCash(1 * 10000)
context = NewCashContext("正常收费")
total += context.AcceptCash(1 * 10000)
context = NewCashContext("打8折")
total += context.AcceptCash(1 * 10000)
fmt.Println(total)
}


告别 DEFINE VIEW:CDS View Entity 迁移全景实战(报表迁移 + ADT 向导 + 避坑清单) CDS迁移的关键要点与策略 CDS DDIC-based View已被标记为废弃,迁移到CDS View Entity成为必要。迁移面临的主要挑战包括激活成本、命名约束和依赖风险。ABAP 7.57及以上版本必须优先处理,否则将积累技术债务。 迁移方式主要有两种: 报表路线:适合渐进式迁移的On-Premise项目 ADT向导:适合云环境批量迁移 关键注意事项: 必须提前检查SQL View依赖关系 金额/数量字段需要显式引用单位/货币字段 建议按使用场景分批迁移 最佳实践是结合报表进行系统盘点,再通过AD 阅读详情

相关推荐

手写数字数据集MNIST

文章目录一、 简介二、下载MNIST数据集训练集和测试集的长度输出图像数据和标记数据的形状显示手写数字图片输出数据集中的第1个样本显示图片 一、 简介 MNIST是一个非常有名的手写体数字识别数据集(手写数字灰度图像数据集),在很多资料中,这个数据集都会被用作深度学习的入门样例。 MNIST数据集是由0到9的数字图像构成的。训练图像有6万张,测试图像有1万张。MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练数据,10000张图片作为测试数据。由250个不同的人手写而成。 每一张图

qq_37289115的博客 1万+

二、大话设计模式之策略模式

定义算法家族,分别封装起来,让它们之间可以互相替换,让算法变化,不会影响到用户 GOOD:适合类中的成员以方法为主,算法经常变动;简化了单元测试(因为每个算法都有自己的类,可以通过自己的接口单独测试。策略模式和简单工厂基本相同,但简单工厂模式只能解决对象创建问题,对于经常变动的算法应使用策略模式。 BUG:客户端要做出判断 源码: //策略基类 class COperation { pu...

xdx2ct1314的专栏 266

企业IT运维实录:批量部署银河麒麟V10-SP1,Ghost镜像与UKey激活实战

本文详细介绍了企业级银河麒麟V10-SP1操作系统的批量部署全流程,包括标准化镜像制作、自动化封装技术、网络化部署方案及UKey集群激活方案。通过实战案例和技术要点解析,帮助企业IT运维团队大幅提升部署效率,确保系统安全与稳定性。

weixin_30729609的博客 387

大话设计模式C++实现二:策略模式

//个人觉得策略模式与工厂模式很像#include <string> #include <math.h> #include <iostream> #include <stdlib.h> class CashSuper { public: virtual double acceptCash(double money) ...

aichengdi7617的博客 199

Star CCM+中衍生零部件下的阈值应用与区域内删除目标网格

同样的在绘制网格结束后,有时出现负体积网格或质量差的网格,为了节约时间成本,可能会选择将负体积的网格或质量差的网格删除。弹出相应的窗口,在窗口中选择相应的区域①,选择标量函数②(此处以网格体积变化为例),选择模型③,设置阈值④,选择No Dispalyer,会根据需求选择显示,最后点击Create⑥完成创建。此处以温度为例,若出现温度异常点,首先在①栏中勾选Function,然后在下面点击⑤Select,在弹出的Function窗口中选择温度场函数,再点击④Identify,查找温度异常网格数量。

2201_75375391的博客 2222

A Mathematical Framework for Transformer Circuits—(二)

transformer数学理论框架

qq_42208244的博客 757

大话设计模式二之策略模式

策略模式 商场收银软件 当重复代码很多,像Convert.ToDouble(),这里就写了8遍,而且4个分支要执行的语句除了打折多少以外几乎没有什么不同,应该考虑重构。 不过这还不是最主要的,如果商场的活动加大,需要有满300返100的促销算法,该怎么办? 使用简单工厂模式,可以先写一个父类,再继承它实现多个打折和返利的子类,利用多态,完成这个代码。 但是应该写几个子类?难道根据

nicolelili1的专栏 308

图像处理入门007:图像处理中的数学基础:线性代数与卷积

一种:把 OpenCV 当黑盒,调用,效果不对就乱调参数;另一种:理解每个像素是怎么被周围邻域"加权平均"的,理解核翻转、边界填充、stride 的含义。前者能干活,后者能解难题。一旦遇到自定义核(比如 ISP 上的锐化)、深度学习反向传播、医学图像重建,你就必须把卷积、相关、矩阵乘法这些基本功捡回来。线性代数三件套:向量点积、矩阵乘法、线性变换;2D 卷积的数学定义:核翻转、滑动窗口、边界填充。并手写一个,验证它与和的结果完全一致(误差 < 1e-9)。f∗gn∑m−∞∞f。

专注:太空算力、AI infra、异构调度、大模型成本工程 386

JavaScript实现《大话设计模式》样例二 —— 策略模式

策略模式(Strategy Pattern): 定义:定义了一族算法; 封装了每个算法; 这族的算法可互换代替。 目的:将算法的使用与算法的实现分离开来。 场景:可用来消除大量的条件分支语句。 例:JS代码实现 // 策略算法封装 let strategy = { add (number1, number2) { return number1 ...

weixin_30779691的博客 183

npm报错 npm WARN deprecated....的问题解决方式

报错 :npm WARN deprecated … 现象:无法进行有效的vue项目的部署以及npm install 命令的执行。 原因一:版本问题 说明:由于npm的版本过低或者过高导致的报错 检查版本: npm -v 如果版本是比较旧的,或者是最新的,这里可以进行对npm的更新和回退。 更新npm版本: npm updated -d 查看可以更新的版本 npm install -g npm 默认安装最新版本 安装回退指定的版本: npm updated -d 查看所有的版本 npm -g i.

任聪聪的博客 16万+

STM32实战开发(110):基于STM32的智能地震监测系统开发

地震监测系统是自然灾害预警体系中至关重要的一部分。随着地震灾害的频发和对自然灾害预测精度要求的提高,智能地震监测系统逐渐成为研究的热点。STM32作为一款高性能的微控制器,凭借其强大的处理能力和丰富的外设接口,在地震监测领域中得到了广泛应用。本篇文章将详细介绍如何使用STM32实现一个智能地震监测系统的开发过程,涵盖硬件设计、软件编程、系统实现及相关代码。通过集成加速度传感器、地震数据采集、实时数据处理和无线数据传输功能,我们可以设计一个高效、稳定的智能地震监测系统。

2201_76125393的博客 710

大话设计模式笔记(二)——商品促销 策略模式

第二章商品促销——策略模式 需求:商品价格计算,并增加折扣条件 工厂模式UML图 在工厂模式中,调用端代码会通过折扣工厂类生成折扣对象,折扣对象调用折扣方法。这里关联了两个类,工厂类和抽象折扣类。 策略模式UML图 在策略模式中,会在策略环境类的构造器中完成折扣类的初始话,并在策略环境的实现方法调用折扣类的折扣算法。这样调用类只会关联策略环境类。 简单工厂模式需要的是生成的

咸鱼老罗的博客 1230

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大话设计模式 读书笔记(二)——策略模式

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

末零 的博客 386

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

<二>读<<大话设计模式>>之策略模式

又和大家见面了,能够坚持写出第二篇文章真不错,好好加油。        >讲解策略模式是以商场收银软件程序开头的,那么问题来了,哪家商场收银软件强,开玩笑了。读过上篇文章《《简单工厂模式》》的知道,它有两个缺点:1、客户端依赖两个类,耦合性高;2、如果算法过多则需要写很多类。解决上面问题的就是策略模式了。 策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不

jzhf2012的专栏 1231

读《大话设计模式》——②商场促销[策略模式]

题目: 做一个商场收银软件,营业员根据客户所购买商品的单价和数量,向客户收费。 方案一: 用两个文本框来输入单价和数量,一个确定按钮来算出每种商品的费用,用个列表框来记录商品的清单,一个标签来记录总计,还需要一个重置按钮来重新开始。 商场收银系统v1.0关键代码 double total = 0.0d; private void btnOK_Click(object sender, EventArgs e) { double totalPrice = Convert.ToDouble(txtPrice.

开心就好的博客 262

大话设计模式二:策略模式(商场促销)

策略模式:它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用的算法客户。       应用案例:商场促销的多样性(折扣,满减,积分)      package Strategy; abstract class CashSuper { public abstract double acceptCash(double money); } class C

技术人生 1281

大话设计模式笔记(二)の策略模式

举个栗子 问题描述 商场收银软件,营业员根据客户所购买的商品单价和数量,向客户收费。 简单实现 /** * 普通实现 * Created by callmeDevil on 2019/6/1. */ public class NormalTest { public static void main(String[] args) { double pric...

weixin_30778805的博客 90

《大话设计模式》Java代码示例(二)之策略模式

策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 package strategy; /** * 策略模式(Strategy) * 现金收费抽象类 */ public abstract class CashSuper { public abstract double acceptCas...

Eric Zhao的博客 402

大话设计模式学习(二)——策略模式

策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换, 此模式让算法的变化, 不会影响到使用算法的客户//策略基类class Strategy {public: //定义算法接口 virtual void AlgorithmInterface();};class ConcreteStrategyA : public Strategy {p

matengbo的专栏 412

Java大话设计模式学习总结(二)---策略模式

策略模式(strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的用户。 先看例子,还是以上节的计算器为例,先给出上节的计算器的主要类: // 运算类 public abstract class Operation { protected int numberA; protected int numberB; protected a...

一个胖子IT男的博客 511

大话设计模式(二)策略模式+简单工厂

策略模式 定义了算法,分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户 /** *定义一个抽象的父类,包含一个抽象的算法Amethod * / public abstract class Strategy { public abstract void Amethod(); } /** *A类用A的实现去实现算法A * / public class Con...

coding_zhao的博客 271

大话设计模式(Golang) 二、策略模式

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33901843的博客 161

拜读经典——大话设计模式(二)——简单工厂模式、策略模式

前言: 继续拜读经典,学习简单工厂模式以及策略模式 简单工厂模式 计算器 我们先来以面向对象的思想来做一个简单的计算器: Operation.cs class Operation { private double _numberA = 0; private double _numberB = 0; public double NumberA { get { return...

#的博客 297

(二)、《大话设计模式》读书笔记 - 策略模式(C++实现)

策略模式介绍    策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。===========================================分割线===================================那么如何来理解什么是简单工厂模式?===============================...

RMYHYMR的博客 382

大话设计模式读书笔记(二) 策略模式

书中通过一道题目,让"小菜"设计一个商场收银软件,营业员根据客户购买商品的数量及单价,想客户收费。,并且软件可以兼容打折,返点等优惠活动的金额计算。 一开始,小菜使用之前所学的简单工厂模式来制作这个收银软件。 收费父类 public abstract class CashSuper { /** * 收费方法 * @param money //原价 * @return */

xsyfl的博客 287

(Python3 代码实现)《大话设计模式》二:策略模式

模式特点:定义算法家族并且分别封装,它们之间可以相互替换而不影响客户端。 程序实例:商场收银软件,需要根据不同的销售策略方式进行收费 代码特点:不同于同例1,这里使用字典是为了避免关键字不在字典导致bug的陷阱。 class CashSuper: def accept_cash(self, money): pass class CashNormal(CashSuper): def accept_cash(self, money): return mo..

神薯片 811
上一篇: 一、大话设计模式 之 简单工厂模式
下一篇: 三、大话设计模式 之 装饰模式
lsj3210
博客等级 码龄17年 3粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值