На сколько понял такого рода проектанты занимаются проектированием:
- объектов/классов (подзадача или детализация следующей);
- систем определенных архитектур (задача);
- систем, которые объединяют в одну уже функционирующие системы (интегрирующие среды)
Патерны объектов/классов
Подразделяются на:
- Структурные.
- Поведения.
- Порождающие.
Структурные патерны
Адаптер
Применяется, когда существуют две подсистемы с определенными интерфейсами. Эти системы не знали о существовании друг друга, поэтому их интерфейсы и не "заточены" друг под друга. Но при этом они используют одни стандарты.
Мы имеем доступ к правке только одной из сторон. Наша задача, чтобы система продолжила общение со старыми "знакомыми" через свой существующий интрефейс. Но для "нового друга" нужен переводчик - адаптер, который поменяет в нужных местах порядок обращения по "правилам этикета" нового друга и они друг друга поймут.
Вот в принципе весь и смысл!
Декоратор(оболочка)
Есть объект в функционирующей системе, он имеет нужные настройки, влияет на нужные компоненты системы и занимает, в конце концов, какие-то ресурсы.
И тут нам понадобилось, чтобы он еще и на "гитаре умел играть", и это в режиме онлайн.
При этом заранее не известно, будет нужно, чтобы он "играл на гитаре", или на "саксофоне", или вообще в "шпилил в покер".
Решить задачу наследованием плохая идея.
Ведь так нам придется делать копию с уже существующего объекта. Как мы можем допустить такое расточительство?!! Зачем нанимать еще одного менеджера среднего звена, если наш не умеет открывать бутылки от шампанского? Проще по необходимости научить нашего!
Программно это значит:
Есть класс с полем-ссылкой на абстрактного общего родителя. Создаваем объект такого класса и ссылаемся на уже существующего "труженника".
И оп! наш "менеджер среднего звена Вася" с этого момента по требованию умеет "играть и на гитаре".
Комментариев нет:
Отправить комментарий