0

我有一个应用程序,它有几个共享一个 UI 的状态。问题是,根据应用程序的状态,UI 的组件会做非常不同的事情。

在一种状态下,将鼠标悬停在组件上可能会显示一个工具提示,在另一种状态下,它可能用作“添加到列表”或某些此类行为的一种方式。

目前,我有一个包含许多组件子类的 UI 类。UI 将回调传递给组件,它们可能会在与之交互时调用。到目前为止,它们的行为由 UI 中的一个简单 switch 语句决定,该语句检查状态并返回行为,但这似乎有不必要地增加复杂性的风险。

我想到的解决方案是每个状态都有一个不同的 UI 类,并在其方法中包含适合该状态的行为。另一个是在 UI 中简单地有一个方法的“字典”,其中一个方法可以像这样调用

doSomething[currentState]()

问题是我必须在 UI 中为每个状态创建相同的方法。

最终的解决方案是简单地拥有一个没有自行处理逻辑的 UI。UI 的所有组件都从“状态管理器”获得回调,然后它又知道要调用的 UI 方法。

解决此问题的最佳方法是什么?

4

1 回答 1

0

一个应用程序通常由一些模块组成,每个模块都应该有依赖的组件。

在您的情况下,每个状态应该是不同的模块。“在一种状态下,将鼠标悬停在一个组件上可能会显示一个工具提示,在另一种状态下,它可能会作为一种‘添加到列表’或类似行为的方式。”,因此该行为可以在每个模块中实现,并且模块具有组件(通过扩展基类或组合,或其他方式)。

这可以使代码清晰,并且可以更容易地替换模块,但更多的类。

而且我认为使用状态来决定行为应该在一个非常低级的代码片段和一个模块中使用。

于 2013-08-16T06:19:49.980 回答