- 4
- 0
- 约 2页
- 2017-06-07 发布于重庆
- 举报
MVC控制器(Controller)与策略模式(Strategy)
MVC控制器 Controller 与策略模式 Strategy
作者联系方式:Li XianJing
MVC模式已经称得上是家喻户晓了,MVC是模型 Model 、视图 View 和控制器 Controller 的首字母缩写。与模型 Model 和视图 View 相比,控制器 Controller 的功能要小得多。正因为它太简单了,MFC甚至把MVC模式简化成文档 Doc /视图 View 模式,控制器 Controller 几乎是个透明人,很少有人提及它。
在典型的GUI应用程序中,控制器 Controller 就是事件处理函数,它仅仅是把模型 Model 和视图 View ,或者视图 View 与视图 View 关联起来,一个简单的胶合层而已,如果MVC模型应用得好,控制器 Controller 只有少量的代码,所以常常被人忽视。
在《企业应用架构模式》中,Fowler先生说过,视图和控制器的分离,就不那么重要了。实际上,几乎Smalltalk的每个版本都没有让视图和控制器的实现分离。为什么你会想分离它们呢,经典的例子是支持可编辑和不可编辑的行为。可以在这两种情况下,用一个视图和两个控制器的实现,这里控制器是视图的策略 strateies 。…
可编辑和不可编辑的行为,主要是针对编辑器控制而言的,如果是针对整个窗口,完全没有必要,直接把窗口上各个编辑器设为只读的就行了。真正去写编辑器的机会并不多,在其它地方,用策略模式 strategy 来配置控制器 Controller 的机会更少。我也从来没有关注过控制器 Controller 。这几天在重构短信应用程序时,我发现有时在控制器 Controller 上还真有文章可作。
在我们的平台上,短信应用程序是邮件系统的一个子系统,完整的邮件系统包括短信、彩信和邮件三个子系统。每一个子系统都是一个插件,这样保证了三者的独立性,以便于裁减。短信应用程序基本功能已经可用了,下一步任务是设计彩信应用的架构和编写主要代码,我发现短信和彩信有很共通之处,决定对短信应用程序进行重构。
经过讨论,我们发现彩信和邮件的数据表完全可以统一起来,主要字段 field 有发件人、收件人、收/发时间、主题、状态和附件等等,而短信看似特殊一点,在仔细分析后,可以发现也就多了一个附件而已。当彩信和邮件没有附件时,它们与短信差不多一样,最后我们决定把三者统一起来,放在一张表中。它们的操作也差不多,于是把短信的模型 Model 改成一个通用的模型,在三者间共享。
短信、彩信和邮件的模型部分统一了,缩减了不少的代码。三者的编写和阅读界面差异很大,统一起来的可能性太小,不做统一的考虑了。但是列表界面则完全一样,该界面上的操作无非是删除、删除全部、查看、编写、回复、转发和设置等等,由于模型 Model 是统一的,删除和删除全部等处理完全一样,而查看、编写、回复、转发和设置等,不同的子系统处理不一样,要在控制器 Controller 中调用不同的函数。
列表界面的代码量并不大,但重复三次可不太爽。我决定重用这个视图,用策略 strateies 来配置控制器 Controller ,控制器 Controller 定义了查看、编写、回复、转发和设置等几个接口函数,其实现也很容易,可以直接指向各个子系统的相关函数。其结构如下图所示:
重构之后,处理简化了,几乎没有重复代码,维护更容易。此外还有一个好处是,动态切换子系统速度更快,界面无闪烁。尽管这次重构对短信应用程序的架构做了很大调整,花了好几天时间,但我认为这是值得的。
~~end~~ 软件英才网 软件行业驰名招聘网站 有需要请联系我们
您可能关注的文档
- 河北省石家庄市2013年高三数学高中毕业班第一次高考模拟考试(文)人教版.doc
- AW进阶手册.doc
- Ayjoxgs大学生毕业实习报告范文之一.doc
- 大型股份企业岗位职务职责大全.doc
- 河北省石家庄市2014年高中毕业班教学质量检测(一)化学(电子版).docx
- 多位数乘一位数整理复习赵2.ppt
- 河北省石家庄市42中七年级历史下册《第11课宋朝的社会生活》学案(无答案)人教新课标版.doc
- A促销员协议书.doc
- 大学个人自我评价范文.docx
- 河北省石家庄市赵县2013-2014学年七年级历史下学期期中试题(版).doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2023年浙江省公务员考试行测真题及答案(A卷).doc VIP
- 2025年河北对口医学题库及答案.doc VIP
- 餐饮美学基础 课件 模块四 餐厅民俗美学.pptx
- (山东)建筑与结构工程施工资料表格汇编(鲁JJ001-074).pdf VIP
- 餐饮美学基础 课件 模块三 餐厅环境美学.pptx
- 2025年长沙电力职业技术学院单招笔试职业技能考核试题库含答案解析.docx VIP
- 雷克萨斯-Lexus NX-产品使用说明书-NX200-ZGZ10L-AWXLPC2-NX200NX200t_OM78064C_01-1412-001.pdf VIP
- 小学语文五年级第二学期第二单元整体作业设计.docx
- 外研版小学英语(三年级起点)三年级上册Module2-Unit1同步检测.doc VIP
- 2025年河南省平顶山市中考生物试卷(含答案).pdf
原创力文档

文档评论(0)