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