これは一般的な質問になります。
特にGUIアプリケーションの設計に苦労しています。異なるパーツ間の相互作用を扱う。
共有状態をどのように処理すればよいかわかりません。一方では、共有された状態は良くなく、可能な限り明確にする必要があります。一方、状態を共有しないと、コンポーネント間に不要な結合が生じます。
例:
スクリプトを使用して、アプリケーションを Emacs/Vim のような方法で拡張できるようにしたいと考えています。明らかに、GUI が使用できるように、ある種の共有状態を変更する必要があります。私の最初の計画は、どこからでもアクセスできるグローバルな「セッション」を持つことでしたが、それについてはよくわかりません。
トリッキーな使用例の 1 つは、キー バインドです。ユーザーがスクリプトからカスタム キーバインドを指定できるようにしたい。各キーバインドは、セッションを唯一の引数として受け取る任意のコマンドにマップされます。
現在、エディター コンポーネントはキープレスをキャプチャします。セッションごとのキーマッピングにアクセスできる必要があるため、セッションにアクセスする必要があります。エディターをセッションに結合することは良い考えですか? 他のコンポーネントもキーバインディングにアクセスする必要があるため、セッションは共有され、シングルトンになる可能性があります...
MVC を超える GUI アプリケーションの設計について、何か良い読み物はありますか?
これは Python と wxPython、FWIW です。
[編集]: 具体的なユースケースを追加しました。