日期:2014-05-18  浏览次数:20642 次

和项目经理争执一个问题,设计模式到底什么时候使用?
刚才和项目经理争执这个问题,用jfreechart做统计分析图页面,我自己的方案是用设计模式进行设计,而且编码已经完成,当需要一个新的分析图时,只需要继承类覆写方法就可以轻松完成,所有包括图片的处理都在后台进行。之后碰到了一些问题,请教经理,结果令人大跌眼镜的是经理全盘否认我的方案,他认为展示图片的代码应当全部写在jsp页面,后台只负责筛选数据,他认为这样的好处是前端页面随时可以修改,而且数据和展示已经完成分离,就算界面改变不需要重新启动服务器!同时他认为我的设计过度。而我认为这样的方案会产生大量的冗余代码,毫无扩展性!争论后,经理要求我以他的方式修改代码,我认为这样完全让我几天的劳动付诸东流,况且改成那样的代码,完全是恶心我自己,我觉得对于前端页面的修改,完全可以在系统上线之前确定下来,反正左右都是改,又不是正式上线。大家认为谁说的对呢??
------解决方案--------------------
首先,不要急于否定你经理的方案就是没有用设计模式。

我倒觉得,楼主看起来处于:手中有模式,心中无模式 状态;(海涵海涵~~~)。

软件设计有时候还要考虑 规模化开发、测试和运维成本,比如:如果项目需要用你的程序实现100个不同维度、角度、方式展现的统计分析图,而且还要相互之间能跳转来跳转去(切片、钻取、关联查询等):
◎ 你有把握能找10个只会写写JSP的中专生,经过2天培训,就完成这些开发么?还是必须找些精通设计模式的本科程序猿来做这些事情?
◎ 规模化开发过程中,能让需求或测试人员随时看到这些页面的开发效果么?还是需要打包发布?或者是什么动态部署啥的?
◎ 将来系统在天南地北的上线了,如果需要做不同层面的修改,有哪些是需要原设计者去现场?还是可以让现场领着2K薪水的运维人员在你电子邮件或远程指导下就能完成的?


也许你的设计都达到了上述目标,那么我觉得这个设计是不错的,你也可以去跟你经理据理力争;如果不是,就反过来想想你经理提出的方案,能不能解决上述问题?

预祝楼主达成:手中无模式,心中也无模式的境界。


------解决方案--------------------
我强烈忠告,你的经理的看法是对的。至于上属下属的问题,那是另一回事并且两个人没有根本冲突。
不要把设计模式看得那么深,并不是那些不常见的才是设计模式,MVC就是设计模式的一种。
首先是架构,然后才是设计模式。界面在项目正式发布以后,还可能会改版。既然你的那些图是更属于显示环节,那就不要与数据、事务模型设计到一起。(你可以在数据、事务模型中尽情地使用设计模式)
至于代码冗余,代码的结构比没有冗余更重要。合理的冗余是正常的,没有任何问题。
------解决方案--------------------
我个人也认为,后台只要负责处理并返回前端展示所需要的数据就好了。

楼主现在的设计是假定在 jfreechart 上了,我们可以试想一下,如果 jfreechart 生成的图片给前端显示的技术用不上了,我们使用诸如 SVG 的图表库的话,那一些 jfreechart 的代码就抓虾了!

就算现在需要使用 jfreechart 的话,在设计上也应做到数据和图形分离,哪怕以后不用 jfreechart 了,那至少数据那块还以继续使用。

经常面试一些人,现在普遍存在一种这样的问题,一问起架构的话,很多人都会回答 SSH,我说,SSH 只是开发框架,是你架构的实现方式,而其本身并不是架构。