我喜欢使用模型视图演示器的变体。这种做法的一个很好的MFC风格示例是“
The Humble Dialog Box
一些原则:
-
-
模型负责数据的形状。在我的模型中,每个属性都存储在LimitedXXX结构中。例如a
LimitedString
CString m_value
int m_maxLen
int m_minLen
AllowedChars m_allowedChars
.
AllowedChars
是一个标志枚举,表示是否允许使用整数、数字、十进制/组字符、字母、标点符号等字符。该模型只有字段,不包含任何逻辑。
-
演示者负责在视图之间传输模型值,并响应视图中的通知。当视图为编辑控件发出更改通知时,演示者会通过验证模型所暴露的限制来做出响应。然后,演示者可以根据值是否有效采取各种操作。它可能会显示一个消息框并还原原始值,可能会将错误消息推送到视图的通知区域,可能会在视图中显示错误图标。
-
组件应该通过接口而不是具体的类引用来相互引用。这允许在没有UI的情况下对模型和演示者进行单元测试。而且UI本身又薄又笨,大部分风险都是通过测试其他两个组件来解决的。