【发布时间】:2011-12-21 20:31:47
【问题描述】:
在我的 C++ 应用程序中,我使用的是 MVC 模式。我有很多模型对象,以及可以从 ui 对它们执行的操作列表。但是只有满足某些条件才能执行操作:
- 如果显示 objectB 或 objectC,我无法显示 objectA,
- 如果未显示,则无法对 objectA 执行任何操作
- 其他更复杂的条件
所以我想有一个类来验证特定类的对象目前是否有有效的动作:
AActionValidator
{
bool CanDoX();
bool CanDoY();
};
BActionValidator
{
bool CanDoZ();
};
Controllers 类将询问此 ActionValidators 是否某个操作在特定时刻可用,如果是,它们将执行该操作。
关注点 1: 但是当某些操作变得可用/不可用时,如何自动禁用/启用 ui 控件?我猜这些 ActionValidators 类在发生这种情况时也应该发出一些事件?但是我的 ui 控件应该连接到一堆不同的 ActionValidator 类的事件
关注点2: 也许最好有一个全局 ApplicationActionManager 类来发出事件,并存储有关应用程序中所有对象的有效操作的信息?但我怕它最终会变成一大类不连贯的类
关注点3: 当 ObjectA 显示时,控制器还可以将 Show 按钮设置为禁用并启用 Hide 按钮,因为这是简单的情况,但这是控制器更新控件状态的工作吗?或者我也应该将显示/隐藏状态作为事件发出?
如何做到这一点的任何见解。谢谢
【问题讨论】:
标签: c++ model-view-controller design-patterns