Это будет общий вопрос.
Я изо всех сил в разработке приложения с графическим интерфейсом, особенно с взаимодействием между различными частями.
Я не знаю, как мне поступить с общим состоянием. С одной стороны, общее состояние плохо, и все должно быть как можно более явным. С другой стороны, отсутствие общего состояния приводит к нежелательному соединению между компонентами.
Пример:
Я хочу, чтобы мое приложение расширялось с помощью сценариев в Emacs / Vim. Ясно, что необходимо изменить какое-то общее состояние, чтобы его использовал графический интерфейс. В моем первоначальном плане была глобальная «сессия», доступная везде, но я не уверен в этом.
Один хитрый вариант использования - это привязки клавиш. Я хочу, чтобы пользователь мог указывать пользовательские сочетания клавиш из сценария. Каждая привязка клавиш отображается на произвольную команду, которая получает сеанс в качестве единственного аргумента.
Теперь компонент редактора фиксирует нажатия клавиш. Он должен иметь доступ к сопоставлениям клавиш, которые являются сеансами, поэтому ему нужен доступ к сеансу. Является ли соединение редактора с сессией хорошей идеей? Другим компонентам также потребуется доступ к сочетаниям клавиш, поэтому сеанс теперь становится общим и может быть одноэлементным ...
Есть ли хорошие отзывы о разработке приложений с графическим интерфейсом, выходящие за рамки MVC?
Это Python и wxPython, FWIW.
[РЕДАКТИРОВАТЬ]: добавлен конкретный вариант использования.