C#策略模式运用,多角色折扣计算程序
策略模式主要在多个相似算法下代替if...else...,并且扩展性强
题目:购票系统,不同角色进入,有不同折扣,用if...else...能实现,但是后期维护新的角色折扣重写量大,故使用策略模式:
实现效果:
源码:
定义IDiscountStrategy接口:
定义各种折扣类继承该接口:
接着定义一个电影票类,CalculatePrice(IDiscountStrategy strategy)其实就是一个依赖注入点,该方法会根据折扣类型的不同自动计算打折后的金额:
这里利用反射创建对象。打开配置文件进行如下配置:
主程序:
实现折扣计算: