関連するクラスのコレクションがあり、それらを呼び出します
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++ コードからわかるように、Settings にはアクションがあり、アクションには 1 つのキー バインディングがあります。さて、私のアプリケーションのユーザーとして、潜在的にキーバインドを更新したいと考えていますか?
現在、各アクションに関連付けられたキーバインド タイプのダイアログにボタンがあるため、アクションは独自のキーバインドの更新を処理できます。
私の問題:
キーバインドが別のオブジェクトにバインドされていないことを確認するにはどうすればよいですか?
考えられる解決策:
- UpdateKeybind 自体を Manager クラスに移動し、Manager にすべての設定を照会させます。
- Action/Setting/Keybind に親ポインターを用意して、Action がマネージャーに更新されたキーバインドを照会できるようにします。
- アクションに他のアクションを照会させます (私が知る限り、概念的にはあまり良くありません)。
あなたから必要なもの:
保守性、速度、理解しやすさ、および OOP の適切性の観点から、Keybind が既に見つかっているかどうかのチェックを実装するための最も厳密なアプローチは何ですか。私はすでに番号 1 を試しました -- 動作しますが、もっと良くなる気がします。StackOverflow で同様の質問を見つけることができませんでしたが、もしあればぜひ見てみたいです!
その他のプロのヒント、改善点は役に立ちます。