V1.0面向过程设计思想
V1.1
添加计费方式下拉框,发现程序不容易维护,不容易扩展,更不容易复用
采用面向对象的设计思想
V2.0面向对象+简单工厂
缺点是每次维护或扩展收费方式都要改动这个工厂,以致代码需要重新编译部署
V2.1策略模式
缺点是在客户端使用switch去判断使用哪一个算法
V2.2策略+简单工厂
缺点是还是要在环境角色中使用switch去判断使用哪一个算法
根据“所有在用简单工厂的地方,都可以考虑用反射技术来去除switch,解除分支判断带来的耦合”原则
V2.3反射+正则表达式
这样在扩展收费方式时,如添加打7折这样的功能,只需要在app.config中添加下拉框选项,使得需求变更的成本最低。而添加像积分超过10000分有新的优惠措施等新的功能,那么只需要将相应的dll文件放在可执行文件的method文件夹中,实现可插拔