"Swiz требует, чтобы все обработчики событий были общедоступными для передачи событий."
Это правда, но сила Swiz в том, что он не навязывает вам (более или менее) выбор дизайна, он просто предоставляет мощные инструменты (внедрение зависимостей, посредничество в событиях и т. Д.), Которые вы можете выбрать для применения там, где вам нужно. считаю целесообразным.
Использование Swiz вообще не требует использования тега [Mediate] - вы все равно можете использовать addEventListener () и прослушивать приватные методы, как обычно (как я уверен, вы хорошо знаете). Насколько я могу судить, передача событий Swiz предназначена главным образом для использования с событиями уровня системы / приложения. Если вы вызываете прослушиватели событий в пределах одного компонента или внутри компонентов близкого семейства, вы обычно используете стандартные прослушиватели событий. Для связи между отдельными, не связанными с другими компонентами, вы можете обработать сообщение с помощью посредника Swiz.
Короче говоря, в любом случае, когда у вас есть доступ к частным прослушивателям событий (т. Е. В близких компонентах), вы, вероятно, не будете использовать [Mediate] для захвата события, и таким образом прослушиватель может оставаться закрытым. Когда вы используете тег [Mediate], обработчик событий обычно находится в совершенно отдельном месте в приложении (например, Presenter -> controller), где он практически не может быть закрытым в любом случае.
Я могу быть немного не в себе, но мне так кажется. Swiz может поощрять слабую инкапсуляцию в некоторых ситуациях, но для меня это обеспечивает большую модульность в целом.