я сегодня такую чудную штуку сделал.. жаль не знаю с какого конца рассказать...
типа ORM, но для "схемы документа"..
документ из "схемы" мапится в "классы-обёртки"
ну типа xml (а точнее EVD) умеет прикидываться деревом классов
со статической типизацией
реально круто, вместо Doc.Attribute['Name'] := YYY
теперь пишу DocStub.Name := YYY
Мысль понятна?
Ну и по рекурсии...
Ну и ещё...
а мусорный код - я теперь примерно знаю как разруливать..
чтобы не было "страниц кода"...
лямбды кстати тому в помощь..
ну и примеси..
примеси это вообще "вещь" для напиливания функционала "на слои"...
сегодня - очередной раз убедился..
не знаю даже как сказать..
смотрите.. был Stream с методом SaveTo
над ним сделал обёртку с методом SaveTo
а потом сделал "список целых" с методом SaveTo
а потом stream заменил на список целых.. и ВСЁ срослось..
паруoverloda функций только добавил..
теперь хочешь Stream, хочешь "список целых".. и всё - прозрачно..
что значит в коде "сделал обертку с методом SaveTo"
как это в коде будет выглядеть ?
Typedef Saveable с методом SaveTo
и Saveable передаю вместо Stream Или List
Ничего космического..
но разные объекты начинают казаться "одинаковыми"..
детали "обёртки"? ну это либо интерфейс, либо Object с дискриминантом
это если вкратце..
по сути похоже на паттерн "адаптер"..
типа ORM, но для "схемы документа"..
документ из "схемы" мапится в "классы-обёртки"
ну типа xml (а точнее EVD) умеет прикидываться деревом классов
со статической типизацией
реально круто, вместо Doc.Attribute['Name'] := YYY
теперь пишу DocStub.Name := YYY
Мысль понятна?
Ну и по рекурсии...
Ну и ещё...
а мусорный код - я теперь примерно знаю как разруливать..
чтобы не было "страниц кода"...
лямбды кстати тому в помощь..
ну и примеси..
примеси это вообще "вещь" для напиливания функционала "на слои"...
сегодня - очередной раз убедился..
не знаю даже как сказать..
смотрите.. был Stream с методом SaveTo
над ним сделал обёртку с методом SaveTo
а потом сделал "список целых" с методом SaveTo
а потом stream заменил на список целых.. и ВСЁ срослось..
паруoverloda функций только добавил..
теперь хочешь Stream, хочешь "список целых".. и всё - прозрачно..
что значит в коде "сделал обертку с методом SaveTo"
как это в коде будет выглядеть ?
Typedef Saveable с методом SaveTo
и Saveable передаю вместо Stream Или List
Ничего космического..
но разные объекты начинают казаться "одинаковыми"..
детали "обёртки"? ну это либо интерфейс, либо Object с дискриминантом
это если вкратце..
по сути похоже на паттерн "адаптер"..
Комментариев нет:
Отправить комментарий