StationFareRuleModel类
这个类定义的是车站票价规则的基本属性。
VIPFareRuleModel类
这个类定义了VIP折扣的属性。
namespace TrainFair.Models { public class VIPFareRuleModel : IFareRule { public int FareRuleId { get; set; } public float Discount { get; set; } } }OtherFareRuleModel类
这个类定义其他额外收费的属性。
namespace TrainFair.Models { public class OtherFareRuleModel : IFareRule { public int FareRuleId { get; set; } public string OtherFareName { get; set; } public float AdditionalFare { get; set; } } }模型的属性可以根据未来的需求进行增强和调整,并可以灵活应用在算法类中。
执行结果
以下是控制台输出:
本文结尾附上了程序代码。 结语
车站基础票价、VIP票价、额外票价等不同类型的票价计算规则是不同的,所有的算法都被分解到不同的类中,以便能够在运行时选择不同的算法。策略模式的用意是针对一组算法或逻辑,将每一个算法或逻辑封装到具有共同接口的独立的类中,从而使得它们之间可以相互替换。策略模式使得算法或逻辑可以在不影响到客户端的情况下发生变化。说到策略模式就不得不提及OCP(Open Closed Principle) 开闭原则,即对扩展开放,对修改关闭。策略模式的出现很好地诠释了开闭原则,有效地减少了分支语句。
程序代码:https://github.com/daivven/TrainFair
作者:阿子
博客地址:
本文地址:
声明:本博客原创文字允许转载,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。