您的位置:知识库 »

.NET初学者架构设计指南(四)Model-View-Controller

作者: 小陆  来源: 博客园  发布时间: 2008-09-10 14:38  阅读: 8878 次  推荐: 0   原文链接   [收藏]  

系列文章导航:

.NET初学者架构设计指南(一)Hello world的时代

.NET初学者架构设计指南(二)OO设计初次见面

.NET初学者架构设计指南(三)设计模式

.NET初学者架构设计指南(四)Model-View-Controller


ActionFactory和ViewFactory采用了反射的方式建立实例。尽管反射是一种比较消耗资源的方式,但是由于工厂把建立的实例缓存了起来,下次再调用的时候直接返回以前建立的实例,这样最大限度的避免了效率的下降。

 

  下面,我们只要在主窗体中定义一个“控件行为表”,就可以消除所有的硬编码了:

 

  当应用程序启动的时候,主窗体按照这个控件行为表的内容创建控件,并且绑定指定的行为。这样就消除了所有的硬编码,也大大加强了软件的灵活性。主窗体现在只是一个空空的框架,视图和业务模型也被很好的隔离。同时,在前端控制器中,应用软件的所有控制行为是集中的,这样,当我们希望在所有的控制器上统一加上某个功能的时候,会非常的简单。比如刚才看到的权限控制。再比如我们需要在所有的行为开始的时候建立一个数据库连接,在行为结束的时候再把连接销毁。使用这样框架,这种统一的行为将十分容易实现,不需要重复的复制粘贴代码。

 

  采用这样的构架,视图和行为可以不断的实现增量开发,各个部件互相不会产生影响。加上.NET程序集的部署方式,可以将这些代码编译成多个动态链接库,实现增量部署,对程序的自动下载更新也是一个有利的条件。

 

  MVC是一种十分重要的构架形式,他可以增强软件的灵活性,使得变更更加的容易。他的优势主要体现在图形界面软件上,主要也是用于增强这一类软件的灵活性,使得和界面相关的修改更加容易一些。比如刚才的主窗体,如果我们要把他改一个样子,如下:

 

  右侧的面板换成了一个Tab标签页。用户切换视图之后,以前的视图不会直接关掉,而是保留在Tab页里,在一个新建的Tab页上显示新的视图。这样操作人员就可以暂时中断手中正在进行的工作,切换到别的视图上做事,做完了再切换回来。现在实现这个变更是十分简单的,只需要修改主窗体的LoadView代码,并且改变ActiveView属性的代码就可以了,对任何一个视图和业务行为都不会造成影响。再举一个例子:如果用户提出这样的需要:操作员可以把自己常用的功能拖放到工具栏上,根据自己的需要自由的定制工具栏的按钮。这种需要也可以很容易的实现。

 

  但是MVC无法用来应对来自业务本身的变化。一旦这样的变化发生了,比如我们需要对变更产品资费的业务进行控制,某些号码段的用户将不允许选择某些资费,这样的控制以前是不存在的。这样的变更就只有通过业务领域层的修改才能解决了。要减轻业务变更带来的痛苦,最根本的方法还是要设计一个清晰合理的业务领域层。

 

 

 

 

0
0

热门文章

    最新文章

      最新新闻

        热门新闻