首页 > 代码库 > 【设计模式】 策略模式
【设计模式】 策略模式
【设计模式】 策略模式
一. 策略模式
1. 对相同功能不同实现的一系列算法的封装, 使切换算法时不会影响调用者
2. 代码
class Strategy { public static void Test() { double money = 600; DiscountBase discount = DiscountFactory.GetDiscount("打折"); if (discount!=null) { double result = discount.GetResult(money); } } } internal class DiscountFactory { public static DiscountBase GetDiscount(string type) { switch (type) { case "原价": return new NoDiscount(); case "打折": return new OffDiscount(); case "满500减300": return new MulDiscount(); default: return null; } } } internal abstract class DiscountBase { public abstract double GetResult(double a); } internal class NoDiscount : DiscountBase { public override double GetResult(double a) { return a; } } internal class OffDiscount : DiscountBase { public override double GetResult(double a) { return a * 0.8; } } internal class MulDiscount : DiscountBase { public override double GetResult(double a) { if (a > 500) { return a - 300; } return a; } }
【设计模式】 策略模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。