Go 策略模式 梦里梦外; 2024-02-19 08:24 28阅读 0赞 ## Go 策略模式 ## 策略模式(Strategy Pattern)是一种行为设计模式,它允许在运行时选择算法的行为。 在 Go 中,策略模式可以通过接口和具体实现来实现,以允许对象在运行时切换不同的算法。 package main import "fmt" // 购物车中的商品项 type CartItem struct { Name string Price float64 } // 定义购物车接口,包括计算总价的策略 type Cart interface { CalculateTotal([]CartItem) float64 } // 满减促销策略 type DiscountCart struct { Threshold float64 // 满减的阈值 Discount float64 // 折扣金额 } func (d DiscountCart) CalculateTotal(items []CartItem) float64 { total := 0.00 for _, item := range items { total += item.Price } if total >= d.Threshold { total -= d.Discount } return total } // 折扣促销策略 type FullReductionCart struct { DiscountRate float64 // 折扣比例 } func (f FullReductionCart) CalculateTotal(items []CartItem) float64 { total := 0.00 for _, item := range items { total += item.Price } // 计算折扣 discount := total * f.DiscountRate return discount } func main() { items := []CartItem{ { "Item 1", 30.0}, { "Item 2", 30.0}, { "Item 3", 40.0}, } // 使用满减策略 discountCart := DiscountCart{ Threshold: 70.0, Discount: 10.0} totalWithDiscount := discountCart.CalculateTotal(items) fmt.Printf("Total with Discount: $%.2f\n", totalWithDiscount) // 使用折扣策略 fullReductionCart := FullReductionCart{ DiscountRate: 0.8} // 0.8 totalWithReduction := fullReductionCart.CalculateTotal(items) fmt.Printf("Total with Reduction: $%.2f\n", totalWithReduction) } ### 不同折扣的计算方式 ### 根据您提供的信息,我可以为您计算不同折扣下的价格: * 100元打8折,即原价的80%:100 \* 0.8 = 80元 * 100元打7.5折,即原价的75%:100 \* 0.75 = 75元 * 100元打9折,即原价的90%:100 \* 0.9 = 90元 * 100元打3折,即原价的30%:100 \* 0.3 = 30元 因此,根据不同的折扣,价格分别是80元、75元、90元和30元。
相关 Go 策略模式 Go 策略模式 策略模式(Strategy Pattern)是一种行为设计模式,它允许在运行时选择算法的行为。 在 Go 中,策略模式可以通过接口和具体实现来实现,以 梦里梦外;/ 2024年02月19日 08:24/ 0 赞/ 29 阅读
相关 Go设计模式-策略模式 策略模式 文章目录 策略模式 引用《大话设计模式》书中对于策略模式的解析,策略模式就是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同 我会带着你远行/ 2022年09月03日 15:16/ 0 赞/ 138 阅读
相关 策略模式 前言 1、面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同的属性和功能的对象的抽象集合才是类。 2、简单工厂也能解决问题,但是 港控/mmm°/ 2021年12月08日 16:21/ 0 赞/ 307 阅读
相关 策略模式 用了也不知道用了的典型。 就是接口存在的意义,意图和实现分离。 就好像1+1=2,实现了一个简单加法一样。。。 转载于:https://www.cnblogs.com/l 曾经终败给现在/ 2021年11月27日 06:14/ 0 赞/ 292 阅读
相关 策略模式 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略 亦凉/ 2021年09月29日 15:56/ 0 赞/ 280 阅读
相关 策略模式 13.策略模式 class Program { static void Main(string[] args) 本是古典 何须时尚/ 2021年09月17日 00:00/ 0 赞/ 392 阅读
相关 策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为 忘是亡心i/ 2021年09月16日 23:00/ 0 赞/ 431 阅读
相关 策略模式 策略模式 1. 模式动机 2. 模式定义 3. 模式结构 4. 时序图 5. 代码分析 6. 模式分析 7. 优点 8. 深碍√TFBOYSˉ_/ 2021年08月31日 02:47/ 0 赞/ 530 阅读
相关 策略模式 面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。 策略模式:定义了算法家族,分别封装起来,让它们之间... 灰太狼/ 2020年11月29日 04:23/ 0 赞/ 600 阅读
还没有评论,来说两句吧...