【发布时间】:2010-03-17 14:38:15
【问题描述】:
假装1有个地方可以输入名字:
姓名:__________________
当文本框发生变化时,该值被控制器吸收,控制器将其存储在数据模型中。业务规则要求输入一个名称:如果没有输入文本,TextBox 应该在视图中用颜色表示错误;否则它可以是视图喜欢的任何颜色。
TextBox 包含一个String,控制器处理一个String,模型存储一个String。
现在让我们说我想改善视图。
有一种新的文本框2,它不仅可以输入基于字符串的键盘输入,还可以输入图像。视图(当前)知道如何确定图像的格式是否正确,以执行从中提取文本所需的处理。如果有文本,则可以将该文本提供给控制器,控制器将其提供给数据模型。
但如果图片无效,例如3
- 文件格式错误
- 尺寸无效
- 位深度无效
- 未处理或未知的编码格式
- 注册标记丢失或位置不正确
- 内容无法识别
视图可以向用户显示图像不好的东西。
但是“告诉用户某事不好”应该是控制器的工作。
当然,我不会重写控制器来处理基于图像的文本输入(例如基于图像的名称)。
a. 代码被二进制锁定在 GUI 小部件中4
b. 除了这个之外还有其他视图,我'我不会将特定视图强加到控制器上
c. 我只是不想。如果我必须在此 UI 改进之外进行更改,那么我将不改进 UI5
那么对于同一个Model和Controller有不同的view是什么想法呢?
吹毛求疵的角落
1 人为的假设示例
2 例如条形码、g-mask、ocr
3 人为的假设原因
4 或 USB 条形码扫描仪的硬件
5 强制用户继续使用DateTimePicker 而不是TextBox
【问题讨论】:
标签: model-view-controller user-interface language-agnostic