我正在写一个flashcard程序,并且遇到我写这类Forms程序时总会遇到的问题。C#Windows窗体的设计模式
我会描述一下这个程序的问题。
在这个程序中,一个主窗体控制几乎所有的动作。根据用户的输入和形式的活动,不同的按钮/控件可以被启用或禁用,各种箱文本可被填充等
例如:
- 有些问题可能是选择题和其他需要输入输入。
- 用户输入他们的答案,然后点击一个按钮 - 如果他们有什么问题,他们可以选择重写“错误答案”的判断,并说这是一个不同的,正确的变体。
- 关于哪些问题得到了正确回答的统计数据会保留下来,并用于决定下一步显示哪些闪存卡。
现在的问题。
如何最好地创建“表单”代码(例如,处理OK按钮的onclick命令,启用或禁用各种控件)和“逻辑”代码(底层数据存储,程序逻辑)之间的干净交互没有立即影响显示)?如果它们全都以表单对象代码的形式混合在一起,那看起来不太合适。
任何人都可以提出一个设计模式(特别是一个广泛使用),管理这干净吗?
在情况下,它是有关我想到的是这样的:
- 对象模型:
- 类MyForm的:窗体本身。
- 类FormController:
- 子类的MyForm。
- 实例化需要MyForm类型的对象。
- 的FormController的工作就是把它的MyForm的对象为特定的“状态”,通过启用/禁用的控制,显示各种文字等
- 的FormController公开了一小部分,其处理的语义高层要求公共职能形式状态(如“DisplayNewQuestion(QuestionData d)”)
- 堂课:包含所有底层持久性数据或对象,涉及本次会议,其中包括可能出现的问题的列表,从列表中选择下一个问题的对象,等等。
- 类驱动程序:驱动Session和FormController对象。例如,它会向Session对象提出一个新问题,并将其传递给FormController对象以更新表单。
的优势,这样的事情是恶心形式的代码和漂亮的逻辑代码现在已经完全分离。但是值得吗?有更好或更常见的设计模式吗?
谢谢!
谢谢!这看起来像是正确的设计,我很欣赏关于创建表单的最后一个注意事项 - 这似乎合乎逻辑。正是我在找的东西。 – 2012-02-08 17:48:15