Здравствуйте, GlebZ, Вы писали:
GZ>И что тебе здесь не нравится? Выделения контекста вещь полезная.
Да, когда он выделяется. А когда мы разбиваем один объект на кучу более мелких, потому что "так сказал пророк", получая в результате пролему их взаимодействия, то надо не контекст выделять, а менять дизайн.
A>>Гораздо лучше, когда IViewTowns подписывается на Towns.Changed, а IViewMap и на Towns.Changes и на Tracks.Changed и они сами решают на что подписыватся, что считывть, как и когда перерисовывать и т.д. Меньше сущностей, проще контроль.
GZ>Не всегда это есть верно. Даже скажу больше, чаще не верно. Чем меньше повторного кода, тем лучше контроль.
А тут не будет повторяющегося кода

Карта рисуется OpenGL, список городов это ListView.
GZ>Для уменьшения повторного кода нужна декомпозиция.
Я бы сказал "удачная декомпозиция"
GZ>А поскольку существует (а чаще всего неоправданная) боязнь сущностей, то так и появляется мусорка кода которую рефакторить принципиально невозмножно (как и определить чем эта мусорка в тот или иной момент занимается). Каждая программная сущность должна выполнять строго определенную задачу. И если четко выполнять данное предписание, то при рефакторинга ты получишь и MCV/MCP и другие паттерны. Но самое главное применение того или иного паттерна будет всегда оправданным.
+1. MVC тоже навязывает абстрактные сущности Controller и View, которые очень просто объединить в Control.