пятница, 5 сентября 2014 г.

Коротко. О солидных и кусочных решениях

По мотивам:

О расширенном делегировании
Расширенное делегирование: Протокол освобождения объекта и контроль ссылок

Не считайте критикой. Считайте "заметками на полях".

Это мне напоминает вот что:

О собственных фреймворках

"Я тоже когда-то шёл по пути универсальных решений".

Я пытался использовать ОДНИ "кошерные" строки. Один "кошерный" класс с итератором и т.д. и т.п.

Один "кошерный" базовый класс.

А потом в какой-то момент понял, что универсальных решений не бывает.

А бывает - "множество мелких решений" собранных по"Це из Эн по Ка".

И тогда я начал "делить код на мелкие кирпичики", а потом "собирать из кирпичиков нужное".

Вот ссылки:

Коротко. И ещё о фабриках
Собственная реализация IUnknown и подсчёт ссылок. И примеси
Generic'и без Generic'ов....
Абстрактные контейнеры

Т.е. я не делаю "расширенное делегирование" для ВСЕХ классов или "не задумываюсь о протоколе освобождения ссылок" вообще.

Я делаю множество "решений" в духе АОП.

Делаю всякие разные реализации Publisher/Subscriber, Changing/Changed, Refcounted, FactoryMethod, Visitor, Facade и т.д. и т.п.

А потом из "этих кирпичиков" собираю то, что нужно.

Я стараюсь делать классы и примеси - максимально короткими и "непохожими на швейцарский нож".

"Швейцарские ножи" я делаю уже как "комбинацию классов и примесей".

Я не использую "универсальные" решения, а использую, конкретные, собранные из "кирпичиков".

Возможно кому-то это будет интересно.

А вообще - "на вкус и цвет" - конечно "все фломастеры разные".

1 комментарий:

  1. Маленькое замечание, не в плане полемики.
    ED - не есть какой-то "универсальный механизм", призванный описать всё, и заменить собою всё.
    Формально, ED это реализация паттерна Observer с дополнительными соглашениями, использование которого возможно (и показано там), где уместно применение Observer.
    Разумеется, реализацию TSBaseClass можно "подмешать" туда, куда требуется, хотя мы так и не делаем, предпочитая, чтобы он всегда был "под рукой".
    Используя Вашу аналогию, ED не есть швейцарский нож, но есть способ, обеспечивающий использование нужного инструмента здесь и сейчас.

    ОтветитьУдалить