小菜编程成长记(六 工厂不好用了?)
系列文章导航:
小菜编程成长记(九 会修电脑不会修收音机?——聊设计模式原则)
小菜编程成长记(十一 无熟人难办事?——聊设计模式迪米特法则)
小菜编程成长记(十三 设计模式不能戏说!设计模式怎就不能戏说?)
“大鸟,搞定,这次无论你要怎么改,我都可以简单处理就行了。”小菜自信满满的说。
“是吗,我要是需要打5折和满500送200的促销活动,如何办?”
“只要在现金工厂当中加两个条件,在界面的下拉选项框里加两项,就OK了。”
“现金工厂?!你当是生产钞票呀。是收费对象生成工厂才准确。说得不错,如果我现在需要增加一种商场促销手段,满100积分10点,以后积分到一定时候可以领取奖品如何做?”
“有了工厂,何难?加一个积分算法,构造方法有两个参数:条件和返点,让它继承CashSuper,再到现金工厂,哦,不对,是收—费—对—象—生—成—工—厂里加满100积分10点的分支条件,再到界面稍加改动,就行了。”
“嗯,不错,那我问你,如果商场现在需要拆迁,没办法,只能跳楼价销售,商场的所有商品都需要打8折,打折后的价钱再每种商品满300送50,最后计总价的时候,商场还满1000送200,你说如何办?”
“搞没搞错哦,这商场不如白送得了,哪有这样促销的?老板跳楼时估计都得赤条条的了。”
“商场大促销你还不高兴呀!当然,你是软件开发者,客户老是变动需求的确不爽,但你不能不让客户提需求呀,我不是说过吗,需求的变更是必然!所以开发者应该的是考虑如何让自己的程序更能适应变化,而不是抱怨客户的无理,客户不会管程序员加班时的汗水,也不相信程序员失业时的眼泪,因为客户自己正在为自己的放血甩卖而流泪呀。”
大鸟接着说:“简单工厂模式虽然也能解决这个问题,但的确不是最好的办法,另外由于商场是可能经常性的更改打折额度和返利额度,每次更改都需要改写代码重
新编译部署真的是很糟糕的处理方式,面对算法的时常变动,应该有更好的办法。好好去研究一下设计模式吧,推荐你看一本书,《深入浅出设计模式》,或许你看
完第一章,就会有解决办法了。”
小菜进入了沉思中……
(待续)本例C#源代码
另:建议大家去阅读《深入浅出设计模式》,第一章下载,本人非常喜欢这本书的风格,这是真正的做到了深入浅出呀。我也希望自己可以用类似的方式讲述问题。
本文还有一个用意是对一些初学者,可以考虑一下大鸟提出的问题,在我的下一篇《小菜编程成长记 八》出来之前,改写我的源代码,实现更灵活更方便的商场收银程序共享给大家讨论,或许您写的东东比我写的还要好,那样就大家都有提高了。程序不是看出来 的,是写出来的。好好加油!