Im работает над оптимизацией моего дизайна с точки зрения mvc, стремясь упростить api представления, которое вполне вложено, даже если Iv построил составные виджеты (с собственными событиями и/pubsub-сообщениями) в попытке упростить вещи.
Например, у меня есть класс верхнего уровня gui класса wxFrame, который имеет несколько виджетов, включая ноутбук, ноутбук содержит несколько вкладок, некоторые из которых представляют собой ноутбуки, содержащие составные виджеты. Поэтому для вызова методов одного из этих составных виджетов из контроллера я бы имел
self.gui.nb.sub_nb.composite_widget.method()
Чтобы создать подходящую абстракцию для представления, я создал ссылки на эти виджеты (методы которых нужно вызывать в контроллере) в представлении так
self.composite_widget = self.nb.sub_nb.composite_widget()
так что в контроллере теперь теперь упрощается вызов
self.gui.composite_widget.method()
Является ли это приемлемым способом создания слоя абстракции для gui?
Ну, это определенно один из способов решения проблемы. Тем не менее я склонен использовать pubsub для вызова методов старомодным способом. Некоторым людям нравится pyDispatcher лучше, чем pubsub. Основная проблема с использованием метода многоточечного метода заключается в том, что его трудно отлаживать, если вам нужно изменить имя метода.