По мотивам:
О расширенном делегировании
Расширенное делегирование: Протокол освобождения объекта и контроль ссылок
Не считайте критикой. Считайте "заметками на полях".
Это мне напоминает вот что:
О собственных фреймворках
"Я тоже когда-то шёл по пути универсальных решений".
Я пытался использовать ОДНИ "кошерные" строки. Один "кошерный" класс с итератором и т.д. и т.п.
Один "кошерный" базовый класс.
А потом в какой-то момент понял, что универсальных решений не бывает.
А бывает - "множество мелких решений" собранных по"Це из Эн по Ка".
И тогда я начал "делить код на мелкие кирпичики", а потом "собирать из кирпичиков нужное".
Вот ссылки:
Коротко. И ещё о фабриках
Собственная реализация IUnknown и подсчёт ссылок. И примеси
Generic'и без Generic'ов....
Абстрактные контейнеры
Т.е. я не делаю "расширенное делегирование" для ВСЕХ классов или "не задумываюсь о протоколе освобождения ссылок" вообще.
Я делаю множество "решений" в духе АОП.
Делаю всякие разные реализации Publisher/Subscriber, Changing/Changed, Refcounted, FactoryMethod, Visitor, Facade и т.д. и т.п.
А потом из "этих кирпичиков" собираю то, что нужно.
Я стараюсь делать классы и примеси - максимально короткими и "непохожими на швейцарский нож".
"Швейцарские ножи" я делаю уже как "комбинацию классов и примесей".
Я не использую "универсальные" решения, а использую, конкретные, собранные из "кирпичиков".
Возможно кому-то это будет интересно.
А вообще - "на вкус и цвет" - конечно "все фломастеры разные".
О расширенном делегировании
Расширенное делегирование: Протокол освобождения объекта и контроль ссылок
Не считайте критикой. Считайте "заметками на полях".
Это мне напоминает вот что:
О собственных фреймворках
"Я тоже когда-то шёл по пути универсальных решений".
Я пытался использовать ОДНИ "кошерные" строки. Один "кошерный" класс с итератором и т.д. и т.п.
Один "кошерный" базовый класс.
А потом в какой-то момент понял, что универсальных решений не бывает.
А бывает - "множество мелких решений" собранных по"Це из Эн по Ка".
И тогда я начал "делить код на мелкие кирпичики", а потом "собирать из кирпичиков нужное".
Вот ссылки:
Коротко. И ещё о фабриках
Собственная реализация IUnknown и подсчёт ссылок. И примеси
Generic'и без Generic'ов....
Абстрактные контейнеры
Т.е. я не делаю "расширенное делегирование" для ВСЕХ классов или "не задумываюсь о протоколе освобождения ссылок" вообще.
Я делаю множество "решений" в духе АОП.
Делаю всякие разные реализации Publisher/Subscriber, Changing/Changed, Refcounted, FactoryMethod, Visitor, Facade и т.д. и т.п.
А потом из "этих кирпичиков" собираю то, что нужно.
Я стараюсь делать классы и примеси - максимально короткими и "непохожими на швейцарский нож".
"Швейцарские ножи" я делаю уже как "комбинацию классов и примесей".
Я не использую "универсальные" решения, а использую, конкретные, собранные из "кирпичиков".
Возможно кому-то это будет интересно.
А вообще - "на вкус и цвет" - конечно "все фломастеры разные".
Маленькое замечание, не в плане полемики.
ОтветитьУдалитьED - не есть какой-то "универсальный механизм", призванный описать всё, и заменить собою всё.
Формально, ED это реализация паттерна Observer с дополнительными соглашениями, использование которого возможно (и показано там), где уместно применение Observer.
Разумеется, реализацию TSBaseClass можно "подмешать" туда, куда требуется, хотя мы так и не делаем, предпочитая, чтобы он всегда был "под рукой".
Используя Вашу аналогию, ED не есть швейцарский нож, но есть способ, обеспечивающий использование нужного инструмента здесь и сейчас.