- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
“你们开发的系统如果能够像Excel那 样支持全选、反选、多选、撤销、导入、导出等命令;不要每次增加一条记录都必须按一下‘新增’,完了以后再按一下‘保存’,取而代之的是我想保存的时候一 按‘保存’,就把我前面所有的操作全都保存,如果我的操作有误,可以撤销刚刚所做的操作。那真是爽死了。”很多的用户这样感慨。用户体验非常重要,很多的 时候,如果用户觉得你的系统不方便,他就会拒绝使用。这样,系统也就没有什么意义了。如果在给客户做演示的时候,能够充分展现你系统在易用性方面的优势, 那么中标几率就会大大的增加。用DataTable、DataGridView和Command设计模式完全可以前面用户所提到的功能。我们先分析一下,用户所提到的功能,实际上就是希望能够对界面层表示的数据方便的发出各种命令,这些命令可以通过一个个的按钮提供给用户调用。如果我们用DataTable来容纳业务数据,用DataGridView来表示这些数据,那么对“全选、反选、多选”等,就是针对DataGridView来说的,而对于“撤销、导入、批量保存”等则是对业务数据来说的,而DataTable则支持这些操作。下面是DataTable、DataRow、DataGridView、按钮和数据操作命令之间的关系简图。可以看出,数据操作命令就是Command模式中的Command,而按钮就是Invoker,而DataTable和DataGridView则是Receiver,在WinForm中,实际上我们主要是通过BindingSource来操作DataTable,所以对于DataTable这个间接的Receiver来说,其直接Receiver就是一个BindingSource。但是,不管是DataTable还是BindingSource都不能全部符合我们的要求,所以我们必须自己实现一个符合我们要求的Receiver,假设我们叫他DataCommandReceiverBase,为了能够进行可是化设计,我们让他继承自Component,其原型如下:??? publicabstractclassDataCommandReceiverBase:Component??? {??????? publicabstractvoid New();??????? publicabstractvoid Delete();??????? publicabstractvoid UnDo();??????? publicabstractvoid Save();}?? 对于“新增、删除、保存、撤销”等命令,我们把它们抽象为一个公共的类,叫做DataCommand,其原型如下:?? ?publicabstractclassDataCommand : Component??? {??????? publicabstractvoid Do();??????? DataCommandReceiverBase _Receiver;??????? publicDataCommandReceiverBase Receiver??????? {??????????? get { return _Receiver; }??????????? set { _Receiver = value; }??????? }}然后,我们对每一个基本的操作,比如“新增”建立一个对应的DataCommand的子类,并重写Do函数,在该函数中调用Receiver相应的功能。如下所示:??? publicclassNewCommand : DataCommand??? {??????? protectedoverridevoid Do()??????? {??????????? Receiver.New();??????? }??? }???? publicclassDeleteCommand : DataCommand??? {??????? protectedoverridevoid Do()??????? {??????????? Receiver.Delete();????????? ??????? }??? }???? publicclassSaveCommand : DataCommand??? {??????? protectedoverridevoid Do()??????? {??????????? Receiver.Save();????? ??????? }??????? ??? }???? publicclassUndoCommand : DataCommand??? {??????? protectedoverridevoid Do()??????? {??????????? Receiver.UnDo(); ???
您可能关注的文档
- 七年级英语上新目标Unit1--12单元重点和语法总复习.pdf
- 2014年物业管理师《基木制度及政策》真题解析1.pdf
- 协同创新及专业素养融合的计算机工程应用型硕士培养体系研究.pdf
- OrCAD中元件批量替换、更新及修改属性方法.pdf
- 基于单目视觉运动目标跟踪定位_孙彪.pdf
- 第4节新 实验例程.ppt
- LCD显示屏出现闪烁的原因及解决.doc
- 农村低保对象的目标定位及动态管理.pdf
- HTML5初级制作必学知识:对象树和对象管理.docx
- 影响文物保存环境因素_陈元生.pdf
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)