УДК 004.4
Баранов С.В. студент магистратуры 2 курс, факультет «Информационные и управляющие системы»
Рожков С.А. студент магистратуры 2 курс, факультет «Информационные и управляющие системы»
БГТУ «Военмех» им. Д.Ф. Устинова Россия, г. Санкт-Петербург
ИСПОЛЬЗОВАНИЕ АБСТРАКТНОЙ ФАБРИКИ ПРИ РАЗРАБОТКЕ ВЗАИМОЗАМЕНЯЕМЫХ СИСТЕМ
Аннотация: В данной статье рассматривается шаблон проектирования абстрактная фабрика. Рассматривается пример её применения, а также случаи её применения и недостатки.
Ключевые слова: абстрактная фабрика, программное обеспечение, шаблон, разработка, система.
Baranov S. V. master's student
2 course, faculty «Information and control systems»
Rozhkov S. A. master's student
2 course, faculty «Information and control systems» BSTU "VOENMEH" named after. D. F. Ustinov
Russia, St. Petersburg
USE OF ABSTRACT FACTORY IN DEVELOPMENT OF INTERCHANGEABLE SYSTEMS
Abstract: This article discusses an abstract factory design pattern. An example of its application is considered, as well as cases of its application and disadvantages.
Keywords: abstract factory, software, pattern, development, system.
Иногда при разработке программного обеспечения возникает необходимость создания системы, которая в может в каких-либо случаях выступать одной из нескольких систем объектов с одинаковыми интерфейсами и различными реализациями. Для решения такой задачи отлично подходит абстрактная фабрика.
Абстрактная фабрика предоставляет интерфейс для создания семейств взаимосвязанных объектов с определенными интерфейсами без указания конкретных типов данных объектов. Для примера рассмотрим структурную схему абстрактной фабрики для создания некоторой системы, представленную на рисунке ниже.
Application
Рисунок 1 - Структурная схема абстрактной фабрики
Как видно из схемы система состоит из трех структурных элементов:
- Controller - отвечает за работу со всеми элементами управления системы, например, различными кнопками и переключателями;
- GraphicArea - отвечает за графическую составляющую системы, например, построение графиков или отрисовка любой другой информации;
- Configuration - отвечает за загрузку всех параметров системы, включая стартовые положения окон, цветовые схемы и прочее.
В общем случае в системах управление GraphicArea происходит через Controller. Настройки Controller и GraphicArea зависят от Configuration. Все элементы взаимосвязаны.
Абстрактные классы Controller, GraphicArea и Configuration определяют интерфейс для классов, объекты которых будут создаваться в программе. Конкретные классы ControllerSystemaA / ControllerSystemaB, SystemaAGraphicArea / SystemaBGraphicArea и SystemaAConfiguration / SystemaBConfiguration представляют конкретную реализацию абстрактных классов.
Абстрактный класс фабрики Factory определяет методы для создания объектов. Причем методы возвращают абстрактные продукты, а не их конкретные реализации. Конкретные классы фабрик SystemAFactory и SystemBFactory реализуют абстрактные методы базового класса и непосредственно определяют какие конкретные продукты использовать.
Класс Application использует класс фабрики для создания объектов. При этом он использует исключительно абстрактный класс фабрики Factory и абстрактные классы продуктов Controller, GraphicArea и Configuration и никак не зависит от их конкретных реализаций.
Стоит отметить, что следует использовать фабрику, когда общая система не зависит от способа создания и компоновки новых объектов и когда создаваемые объекты должны использоваться вместе и являются взаимосвязанными.
Таким образом, создание системы абстрагируется от самого класса системы или её составляющих. В то же время нельзя не отметить и недостатки шаблона. В частности, если нам захочется добавить в систему новый объект, то придется переделывать классы фабрик. Поэтому возможности по расширению в данном шаблоне имеют некоторые ограничения.
Использованные источники:
1. Гамма Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования / Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. - СПб.: Питер, 2015. - 368 с.