Паттерн проектирования — это продуманный способ построения исходного кода программы для решения часто возникающих в повседневном программировании проблем проектирования. Иными словами, это уже придуманное решения, для типичной задачи. При этом паттерн не готовое решение, а просто алгоритм действий, который должен привести к желаемому результату. Давайте рассмотрим один из наиболее часто используемых порождающих паттернов — Фабричный метод (Factory Method).
Как я уже писал ранее, существует три вида паттернов проектирования:
- Порождающие паттерны позволяют возможность выполнять инициализацию объектов наиболее удобным и оптимальным способом.
- Структурные паттерны описывают взаимоотношения между различными классами или объектами, позволяя им совместно реализовывать поставленную задачу.
- Поведенческие паттерны позволяют грамотно организовать связь между сущностями для оптимизации и упрощения их взаимодействия.
Фабричный метод (Factory Method) — это порождающий паттерн, который задает интерфейс создания экземпляра объекта, но при этом позволяет наследникам решать экземпляр какого типа создавать. То есть, базовый класс определяет интерфейс создания экземпляра, а реализацию процесса инстанцирования предоставляет наследникам.
Давайте рассмотрим диаграмму паттерна Фабричный метод
- Creator — объявляет абстрактный или виртуальный метод создания продукта. Использует фабричный метод в своей реализации
- ConcreteCreator — реализует фабричный метод, который возвращает ConcreteProduct
- Product — определяет интерфейс продуктов, создаваемых фабричным методом
- ConcreteProduct — определяет конкретный вид продуктов.
Рассмотрим основную логику работы паттерна Фабричный метод. На самом деле данный паттерн является частным случаем другого паттерна, рассмотренного нами ранее в статье Паттерн проектирования Шаблонный метод (Template method) на языке C#. В базовом классе создателе мы определяем метод создания нового экземпляра базового класса продукта. И в дальнейшем реализуем этот метод для конкретных создателей и продуктов. В качестве примера давайте рассмотрим устройство для изготовления денег. Мы можем создать различные валюты соответствующие устройства для их печати. Давайте рассмотрим пример кода.
Продолжение с примером исходного кода доступно в статье Паттерн проектирования Фабричный метод (Factory Method) на языке C#