Казахстан, Караганды, Карагандинский экономический университет, 2009 |
Порождающие шаблоны проектирования
Фабричный метод
В условиях, когда необходимо определить интерфейс для создания конкретного объекта, но требуется делегировать системным подклассам решение о том, какой класс нужно инстанциировать, используется шаблон "Фабричный метод".
Алгоритм реализации этого паттерна выглядит следующим образом:
- Необходимо унифицировать интерфейсы всех создаваемых объектов.
- В классе, который производит продукты, создайте пустой "Фабричный метод".
- В качестве возвращаемого типа укажите общий интерфейс продукта.
- Затем найдите все участки приложения, в которых инициируется создание требуемых объектов.
- Поочередно заменяйте эти участки вызовами "Фабричного метода", а сам код перемещайте в "Фабричный метод".
- Переопределите "Фабричный метод" в подклассах, перемещая туда создание соответствующих продуктов.
- Если создаваемых продуктов слишком много,целесообразно задуматься о введении параметров в "Фабричный метод", которые позволят возвращать различные продукты в пределах одного подкласса.
Преимуществом этого паттерна является то, что нет необходимости встраивать в код зависящие от приложения классы.
Основной недостаток этого шаблона – возникновение дополнительного уровня подклассов, который необходимо поддерживать и сопровождать.
Выводы
Эта лекция является предпоследней лекцией данной книги и последней главой, в которой обсуждаются шаблоны проектирования.Данная работа выстроена в соответствии со справочной структурой, в которой описаны шаблоны проектирования информационных систем. Материал, используемый и излагаемый в этой книге, сформирован на основе исследований, обобщения и реструктурирования материала наиболее известных, значимых и признанных данных в этой области информационных технологий.
Описания шаблонов проектирования структурированы таким образом, чтобы обеспечить максимальное удобство в их освоении и использовании. Для этой цели выделены пять групп шаблонов проектирования.Каждая из этих групп описывает паттерны для решения задач определенного уровня– от архитектурных задач до задач порождения информационных объектов внутри конкретной информационной системы.
В следующей главе мы перейдем к обсуждению задач, связанных с оптимальным представлением шаблонов в едином архитектурном виде, ценным для решения конкретных практических задач.