Найти тему
using Dev

Фабричный метод C#

Оглавление

Фабричный метод — это порождающий паттерн проектирования, который определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.

Шаблон используется в случаях если:

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

Реализация шаблона в общем виде

  • определяется интерфейс порождаемых объектов IProduct;
  • базовый класс описывает метод public IProduct FabricMethod() для их создания;
  • наследники переопределяют его, порождая свои реализации IProduct;
  • базовый класс и клиентский код используют в работе только интерфейс IProduct, не обращаясь к конкретным реализациям самостоятельно.

Пример реализации

Для начала создадим интерфейс IProduction с единственным методом Release();

-2

Данный интерфейс представляет абстрактное представлением выпуска нового продукта. После создадим конкретный класс Product который реализует интерфейс IProduction.

-3

А так класс AnotherProduct который так же реализует интерфейс IProduction.

-4

После создадим интерфейс IFactory, который представляет собой фабрику, производящую Products, в котором реализован единственный метод Create();

-5

Данный интерфейс будет реализован в конкретном классе ProductFactory и AnotherFactory, в них метод Create будет возвращать экземпляр класса Product и соответственно AnotherProduct.

-6

Посмотрим применение данного паттерна

Создаем экземпляр фабрики по производству Product. Результат метода Create создаст Product. Далее переквалифицируем фабрику на производство AnotherProduct. Теперь результат метода Create создаст AnotherProduct. В итоге на созданных продуктах вызываем метод Release.

-7

Результат выполнения

-8

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