Найти в Дзене

Паттерн проектирования Фабричный метод (Factory Method) на языке C#

Паттерн проектирования — это продуманный способ построения исходного кода программы для решения часто возникающих в повседневном программировании проблем проектирования. Иными словами, это уже придуманное решения, для типичной задачи. При этом паттерн не готовое решение, а просто алгоритм действий, который должен привести к желаемому результату. Давайте рассмотрим один из наиболее часто используемых порождающих паттернов — Фабричный метод (Factory Method).

Как я уже писал ранее, существует три вида паттернов проектирования:

  • Порождающие паттерны позволяют возможность выполнять инициализацию объектов наиболее удобным и оптимальным способом.
  • Структурные паттерны описывают взаимоотношения между различными классами или объектами, позволяя им совместно реализовывать поставленную задачу.
  • Поведенческие паттерны позволяют грамотно организовать связь между сущностями для оптимизации и упрощения их взаимодействия.

Фабричный метод (Factory Method) — это порождающий паттерн, который задает интерфейс создания экземпляра объекта, но при этом позволяет наследникам решать экземпляр какого типа создавать. То есть, базовый класс определяет интерфейс создания экземпляра, а реализацию процесса инстанцирования предоставляет наследникам.

Давайте рассмотрим диаграмму паттерна Фабричный метод

Фабричный метод (Factory Method)
Фабричный метод (Factory Method)
  • Creator — объявляет абстрактный или виртуальный метод создания продукта. Использует фабричный метод в своей реализации
  • ConcreteCreator — реализует фабричный метод, который возвращает ConcreteProduct
  • Product — определяет интерфейс продуктов, создаваемых фабричным методом
  • ConcreteProduct — определяет конкретный вид продуктов.

Рассмотрим основную логику работы паттерна Фабричный метод. На самом деле данный паттерн является частным случаем другого паттерна, рассмотренного нами ранее в статье Паттерн проектирования Шаблонный метод (Template method) на языке C#. В базовом классе создателе мы определяем метод создания нового экземпляра базового класса продукта. И в дальнейшем реализуем этот метод для конкретных создателей и продуктов. В качестве примера давайте рассмотрим устройство для изготовления денег. Мы можем создать различные валюты соответствующие устройства для их печати. Давайте рассмотрим пример кода.

Продолжение с примером исходного кода доступно в статье Паттерн проектирования Фабричный метод (Factory Method) на языке C#

Наука
7 млн интересуются