我有一个相关类的集合,调用它们
class Manager {
private:
std::vector<Setting> m_settings;
}
class Setting {
private:
std::vector<Action> m_actions;
}
class Action {
private:
Keybind m_keybind;
}
class Keybind {
public:
UpdateKeybind;
private:
TYPE keybind;
}
从伪 C++ 代码中可以看出,设置有动作,动作只有一个键绑定。现在,作为我的应用程序的用户,您可能希望更新 Keybind,是吗?
我目前在与每个操作关联的键绑定类型对话框中有按钮,因此该操作可以处理更新它自己的键绑定。
我的问题:
如何确保 Keybinding 没有绑定到另一个对象?
可能的解决方案:
- 将 UpdateKeybind 本身移动到 Manager 类,然后让 Manager 查询所有设置。
- 在 Action/Setting/Keybind 中有一个父指针,以便 Action 可以查询管理器以获取更新的键绑定。
- 让动作查询其他动作(据我所知,在概念上不是很好)。
我需要你的东西:
就可维护性、速度、易于理解和 OOP 的适用性而言,最严格的方法是实现检查是否已经找到 Keybind,无论是在我建议的解决方案中还是完全其他的方法。我已经尝试过 1 号——它有效,但我觉得它可能会更好,你挖吗?我在 StackOverflow 上找不到类似的问题,但如果你找到了,我很乐意看到它们!
任何其他专业提示,需要改进的东西都是有帮助的。