用于用户操作验证的Java Swing GUI设计技术(MVC-FSM)

时间:2011-01-06 14:10:36

标签: java model-view-controller user-interface design-patterns swing

我已经使用Swing实现了GUI,并且总是试图尽可能多地遵循MVC模式 我想知道,如果MVC不是这个难题的唯一部分 FSM是否也用于GUI的设计中? 我从未在GUI中使用过FSM,我的方法是:在操作中,调用控制器的相应方法,最终更新模型,最后更新视图。
通常在用户操作触发请求时,我使用了一些简单的检查来确保用户应该能够执行此类操作:是否启用了特定组件?或者这种标签是否可见?等
这似乎到目前为止工作,但我必须承认我“幸运”,并且不必构建过于复杂的复杂或精细的GUI。 我之前构建了FSM(在不同类型的应用程序中 - 主要是在C ++中),我开始怀疑GUI中的FSM是否实际用作模式和我的方法,即检查ActionListeners代码,用户看到的内容以及哪些组件启用或禁用等以确定用户是否应该看到一些错误消息而不是能够执行特定操作,例如按钮承诺对于成熟的GUI应用程序来说实际上是一个坏主意 因此,当开始设计GUI以及如何实现MVC时,您是否在设计中适合/关联了FSM? 的更新:
在评论Dhruv Gairola的评论后,我仍然对此感到困惑 文章提到构建FSM虽然实际上绑定到计算器实现,这意味着即使计算器实现了用户输入而没有GUI但通过命令行,仍然需要FSM。 我仍然不确定FSM是否在每个时间点验证用户的行为,是一种流行或有效的设计 似乎可能需要付出太多精力,并且需要提前完全设计GUI,并且所有可能的用户操作都已根据特定状态映射到特定结果。
鉴于没有任何评论只是一个回复,我倾向于认为可能是FSM(以验证用户对控件的操作)实际上没有使用。

对此的任何意见都非常受欢迎 谢谢。

1 个答案:

答案 0 :(得分:2)

让我们这样说 - 设计模式主要是对不同设计原则的阐述,例如:封装不同的东西,编程到接口,而不是实现等等,所以它不是你必须使用模式或任何东西,基本上确保您的编程方式符合良好的设计原则。如果将FSM用于特定设计使设计更有意义,那么建议你去做。通常鼓励模式,以便其他程序员能够理解您的逻辑并根据他们对模式的了解轻松扩展它。没有严格的规则说你必须使用MVC,你必须使用等等等等......结论:只要你应用的模式符合良好的设计原则,(或者即使你没有使用特定的模式),确保其设计良好,足以让其他人轻松扩展和理解。那是我的两分钱......