winform MVC模式及项目实际运用

107 阅读3分钟

[TOC]

概述

M-models 数据模型,根据要需要设计相应的数据模型,进行数据存储
V-view UI也就是用户界面,用户直接进行交互的界面
C- controller 控制逻辑,用各个控件背后的event实现用户交互界面的各个功能

三者关系

三者之间的关系见下图: image.png 用户与UI进行交互,trigger各个控件的event(即 event handler),各个函数功能通过使用数据模型进行数据的manipulate,再将根据数据操作得出的结果相应在UI上render。
同时model的变化也会直接display在UI上(这种用法时,用于监视此Model的View必须事先在此Model上注册,以保证数据发生变动时及时display,可以使用观察者模式)。或者数据的改变会先trigger相应的事件,再通过controller去渲染UI。

实际项目的开发流程中MVC运用

基本流程

step 1. 根据需求进行UI的大致确定

接到其他部门或者用户发来的需求时,先根据需求套路出大致spec,利用jsdesign等制图软件大致确定UI界面(并不涉及代码,只是第一遍确认需求过后利用软件做出大致的UI效果——各个部分要实现的功能,便于直观呈现给客户,用于UI的敲定)

过程中注意:

  • 在制作UI之前搜罗市面上有没有相应功能的竞品软件,他们的UI设计的功能模块可以具有参考性
  • 在设计UI各个功能模块时,心里要有底,各个模块能不能实现,要用什么控件去实现——eg treeview datagridview datatable ect。同时有哪些功能现有的control没有办法方便快捷的实现,需要用到自定义的user control,这部分的user control要怎么做,数据模型要怎么实现等等

过程大概是:调研确定control类型→利用制图软件做出大致UI→展示用户关心的feature→展示需要讨论的point
之后再使用制作出来的UI和用户进行第二轮讨论,确定各个部分的功能实现是否符合需求,是否需要改进,是否有细节或者使用习惯不符合等等。

step 2. V-key + C-min

V-key :在和用户敲定完UI和需要turned feature之后,就可以动手进行软件的开发。首先是利用各个现有的control根据确定下来的UI图进行mainform的搭建,也就是把V-key搭建起来(这一步先不考虑开发usercontrol)。在搭建的过程中记录相应的TBD,用于后续讨论确认。
C-min:在搭建的过程中将各个control对应的会用到的event handler做到心中有数,创建一些相应的empty event controller 以待填充。

step 3. M-min

  • 实现一些对之后开发调试有影响的model——eg.logging / error handing /(empty) threading /static utilities ,etc.
  • 引入一些经过验证的经验model
  • 确定project代码组织架构

step 4.V+ M-max

V:这部分主要是usercontrol的开发以及相应的usercontrol的模型设计,从而降低设计的复杂度,提高程序可维护性。 M-max:根据spec进行主要feature的数据模型的设计,以串口通信为例:tx/rx的format、request、response的packets,data的 encoding、decoding,同时还有各个static classes以及interface以及threads...过程中注意:

  • 面向对象,模块化
  • 使用interface进行解耦

step 4. V-max + C-max

V-max: 各个用户操作上coner case 的检查,eg 关闭时的确认提醒,更改后的保存提醒等等 C-max:主要的feature的实现,进行各个control 的event的撰写,这个过程中注意:

  • 用delegate(或者action)对跨线程的UI资源访问做封装
  • 熟练掌握control的常用属性、event、缺陷以及workaround方法
  • 合理使用try-catch,using