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