Здравствуйте, cppguard, Вы писали:
C>CAD, IDE, всякие текстовые редакторы. Можно долго не думать и сделать клиент-сервер, слабую связность везде, но два вопроса:
C>1. Накладные расходы -> теряется скорость отклика.
C>2. Как задавать зависимости между компонентами? Например, есть компоненты А и B. Если А работает, то B должен подождать. Но для этого B должен знать про существование А, а это уже не слабая связность. Можнно вввести блокировки ресурсов, конечно, но это банальные варианты из головы, потому что я не проектировал такие штуки никогда.
Ну чудес не бывает, если В должен знать про А, то он должен знать.
Иногда можно сделать подписку на события, чтобы развязать компоненты. Но система подписок частенько превращается в жуткий говнокод, который невозможно отлаживать/поддерживать.
Явно заданная связь между компонентами — не самое плохое решение.
В общем, надо смотреть по месту.
C>Что можно почитать на тему проектирования таких штук?
Чисто про десктопные приложения ничего не попадалось.
Так что "Чистая архитектура" и "Паттерны проектирования" — по-прежнему нашефсё!
Один раз, правда, попала в лапы книга одного из разработчиков Mentor Expedition, но там общие рекомендации про уменьшение зависимостей и прочее, что можно было прочесть и у Саттера/Мейерса/банды 4-х.
Занятно, что, несмотря на "правильность" книги, внутри Экспедишена был лютый АдЪ из выделений по new и интрузивных списков. В дебаге запускать было бесполезно