这将是一个通用问题。
我正在努力设计一个 GUI 应用程序,尤其是。处理不同部分之间的交互。
我不知道应该如何处理共享状态。一方面,共享状态是不好的,事情应该尽可能明确。另一方面,没有共享状态会在组件之间引入不必要的耦合。
一个例子:
我希望我的应用程序可以通过脚本以 Emacs/Vim 的方式进行扩展。显然,需要修改某种共享状态,以便 GUI 使用它。我最初的计划是有一个可以从任何地方访问的全球“会话”,但我不太确定。
一个棘手的用例是键绑定。我希望用户能够从脚本中指定自定义键绑定。每个键绑定映射到一个任意命令,该命令接收会话作为唯一参数。
现在,编辑器组件捕获按键。它必须有权访问每个会话的键映射,因此它需要访问会话。将编辑器与会话耦合是个好主意吗?其他组件也需要访问键绑定,因此会话现在变为共享并且可以是单例...
是否有任何关于设计超越 MVC 的 GUI 应用程序的好读物?
这是 Python 和 wxPython,FWIW。
[编辑]:添加了具体用例。