在大话中,我们已经学习过策略模式,并且对书中的例子进行了实现。可是真到了此时,要将策略模式应用到机房收费系统中,感觉无从下手了。好在,还是很快的迈出了第一步--做!
第一次在机房中加的设计模式就是抽象工厂,说实在的,那时候的感触远远没有现在加入策略模式大。其中最主要的原因就是--自我思考!抽象工厂是在网上参考他人经验后写的,可以说是比猫画虎吧,当时写完了也没有自己思考一下为什么别人要这么写,为什么别人可以自己写出来而自己却写不出来呢?现在要开始合作了,开始加策略模式,也是第一反应就是上网查资料,可是后来突然想到了抽象工厂的教训,于是断然关闭了网页,开始自己探索。
很快的,不到一个上午的时间,初步在机房中加入了第一版的策略模式,个人感觉很良好,先不管对错,起码运行起来很完美。充分享受完这种自豪感后,还是和别人讨论了一下我的方法的对错。应该说是庆幸,在讨论后,我才知道,我实现了功能,却错误了过程,也错误了策略模式的初衷!为什么这么说呢?且听听我的第一遍思路吧:(不再展示具体代码)
1.错误思路:将策略模式分层了!
(1)Context类放在B层,通过引用接口层来实现D层代码;
(2)Strategy类放在接口层(包含ConcreteStrategyA和