我有一个应用程序,它有几个共享一个 UI 的状态。问题是,根据应用程序的状态,UI 的组件会做非常不同的事情。
在一种状态下,将鼠标悬停在组件上可能会显示一个工具提示,在另一种状态下,它可能用作“添加到列表”或某些此类行为的一种方式。
目前,我有一个包含许多组件子类的 UI 类。UI 将回调传递给组件,它们可能会在与之交互时调用。到目前为止,它们的行为由 UI 中的一个简单 switch 语句决定,该语句检查状态并返回行为,但这似乎有不必要地增加复杂性的风险。
我想到的解决方案是每个状态都有一个不同的 UI 类,并在其方法中包含适合该状态的行为。另一个是在 UI 中简单地有一个方法的“字典”,其中一个方法可以像这样调用
doSomething[currentState]()
问题是我必须在 UI 中为每个状态创建相同的方法。
最终的解决方案是简单地拥有一个没有自行处理逻辑的 UI。UI 的所有组件都从“状态管理器”获得回调,然后它又知道要调用的 UI 方法。
解决此问题的最佳方法是什么?