本文共 2495 字,大约阅读时间需要 8 分钟。
针对现有代码的优化思路如下:
优化思路
为了解决上述问题,可以采用**策略模式(Strategy Pattern)**来优化代码结构。通过引入一个抽象Strategy接口,分别实现不同折扣算法的逻辑, 然后通过Strategy对象来统一处理计算任务。这种方式可以有效地遵循开放-封闭原则,提高代码的可扩展性。具体实现步骤
// Strategy接口定义public interface IStrategy{ double AcceptCash(double money);}// 各算法实现public class NormalStrategy : IStrategy{ public double AcceptCash(double money) { return money; }}public class EightFoldStrategy : IStrategy{ private double rebate = 0.8; public EightFoldStrategy(double rebate) { this.rebate = rebate; } public double AcceptCash(double money) { return money * rebate; }}public class FullMinusStrategy : IStrategy{ private double condition = 200; private double returnMoney = 50; public FullMinusStrategy(double condition, double returnMoney) { this.condition = condition; this.returnMoney = returnMoney; } public double AcceptCash(double money) { if (money < condition) { return money; } return money - Math.Floor(money / condition) * returnMoney; }}// CashContext优化后的实现public class CashContext{ private IStrategy strategy; public CashContext(string type) { switch (type) { case "正常": strategy = new NormalStrategy(); break; case "8 折": strategy = new EightFoldStrategy(0.8); break; case "满 200 - 50": strategy = new FullMinusStrategy(200, 50); break; default: strategy = null; break; } } public double GetResult(double money) { if (strategy == null) { return 0; } return strategy.AcceptCash(money); }} 优化效果
通过上述优化,CashContext类的构造函数逻辑被简化,新增折扣算法只需添加相应的Strategy子类即可,无需修改现有代码。这种方式不仅遵循了开放-封闭原则,还提高了代码的可维护性和扩展性。后续优化建议
转载地址:http://kcuvz.baihongyu.com/