Работаю в проекте, реализованном на C#. Предлагаю решение задачи, с которой столкнулся в проекте.
Условия. Есть классы-сущности, описывающие данные предметной области. При этом бывает и наследование — естественным образом организованное отношение «является». Эти классы описывают данные. Они лежат в отдельной сборке. Есть уровень клиента и уровень сервера. И ими используется эта сборка.
Возникновение задачи. Сборка, описывающая сущности, может описывать поведение только предметной области. Но, возникла задача, когда в слое сервера нужно работать с объектами, описанными в сборке сущностей, у которых уже есть иерархия наследования, полиморфно. При этом нужно сохранять ту же иерархию наследования. Требуемая работа с объектами на сервере не относится к предметной области.
Читать полностью »
Рубрика «паттерны» - 7
«Мост» с наследованием
2012-04-10 в 17:10, admin, рубрики: паттерны, проектирование, Проектирование и рефакторинг, метки: паттерны, проектированиеПрограммирование / Еще раз про Bridge (в картинках)
2012-02-20 в 15:29, admin, рубрики: bridge, паттерны, метки: bridge, паттерны
Еще раз, если позволит сообщество, обращусь к теме паттерна Мост (Bridge), ибо последние статьи, на мой взгляд, объясняют его не так просто, как нужно.
Основная идея: «Используем Мост там, где нужно менять не только имплементацию, но и абстракцию».
Одна картинка стоит 1000 слов…

Разносим абстракцию (API) и имплементацию в две разных иерархии и получаем возможность управлять ими раздельно. Теперь имплементация не привязана к интерфейсу, и мы можем создавать новые абстракции (путем расширения), основываясь на методах базовых абстракций.
