设计模式之策略模式在地铁票价系统中的应用 (2)

StationFareRuleModel类
这个类定义的是车站票价规则的基本属性。

namespace TrainFair.Models { public class StationFareRuleModel : IFareRule { public int FareRuleId { get; set; } public int StationsCounts { get; set; } public float IncrementalPrice { get; set; } public float StationDistance { get; set; } } }

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

 作者:阿子

 博客地址:

 本文地址:

 声明:本博客原创文字允许转载,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzspwx.html