在步入正题前,我们来先聊一些题外的话,魔兽世界估计很多程序员都听过,可能玩过的人也很多,我虽然没怎么玩,但我也接触过,我们来说下战场,要想打赢,必须有一个人去指挥战场,如果没人指挥,这战场十有八九会输掉,我相信,很多人打过战场的人都深有体会的。没玩过魔兽,没打过战场?没关系,拿真实的战役来说吧,三国时期的赤壁之战,这个够经典了吧,如果连这个都没听过,下面的,不用看了。为何刘备他们能打赢?那是因为有一个很了得的军师:诸葛亮做指挥。在开战前,军师们,当然不只诸葛亮是军师,曹操他们那边也有不少。军师会先分析研究地形、气候、人,以及模拟猜测敌方会使用何种计谋等,然后再根据自己自身的条件去作出不同的人员安排等等。可知,要胜利,必须要有一个站在高处,纵观所有一切可以掌握的资源,去作出合理安排的指挥者。
做软件设计何尝不是呢?这就是为何我要设计WinAction的原因,这里WinAction就是这个站在一定的层面上去设计的,是由它来安排所有的资源去运行。这样做有以下的好处:
- 各功能模块相对独立,避免不同功能模块之间的引用混乱(做产品开发的人或者是十分注重可重用性的人,对这个的理解应该会比较深入,因为很多时候,你要复用一个功能模块,你就得去引用某个dll文件,如果这个dll里面的代码不是相对独立的,同时又引用了别的功能模块的,甚至有的引用到了别的项目的dll文件,那是多么的悲哀),因此,我们最好就是在其中一个层面上去引用你需要的模块。而不要因为方便,而无任何规律地盲目引用,我们这里,就是让WinAction可引用所有项目中需要用到的资源。
- 类似一种MVC的框架模式,WinAction调用BLL去获取需要的数据实体,然后把数据实体的数据推送到展示层使用,因此,WinAction就充当了Controler的角色了。
- 方便问题分析。目前大部分业务系统都是围绕着数据库进行开发的应用,因此,查问题就可以分开来查,在WinAction中检查页面通知要执行的操作,在执行这个操作的时候,检查相关的参数是否正确,如果是不正确,跟踪检查页面逻辑。如果正确,检查WinAction中所调用的操作流程的逻辑。如果是数据库操作的,可以直接检查执行当前执行的SQL语句有没有问题。
- 使用接口编程的方式,页面允许日后的重载,客户自己封装。只需满足接口需要,就可以进行各窗体的灵活替换。
原创作品出自努力偷懒,转载请说明文章出处:http://blog.csdn.net/kfarvid或 http://www.cnblogs.com/kfarvid/