Фабричний метод (шаблон проектування)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Фабричний метод (англ. Factory Method) — шаблон проектування, відноситься до класу твірних шаблонів.

Призначення[ред.ред. код]

Визначає інтерфейс для створення об'єкта, але залишає підкласам рішення про те, який саме клас інстанціювати. Фабричний метод дозволяє класу делегувати інстанціювання підкласам.

Мотивація[ред.ред. код]

Застосування[ред.ред. код]

Слід використовувати шаблон Фабричний метод коли:

  • класу невідомо заздалегідь, об'єкти яких саме класів йому потрібно створювати;
  • клас спроектовано так, щоб об'єкти, котрі він створює, специфікувалися підкласами;
  • клас делегує свої обов'язки одному з кількох допоміжних підкласів, та потрібно локалізувати знання про те, який саме підклас приймає ці обов'язки на себе.

Структура[ред.ред. код]

UML діаграма, що описує структуру шаблону проектування Фабричний метод
  • Product — продукт:
    • визначає інтерфейс об'єктів, що створюються фабричним методом;
  • ConcreteProduct — конкретний продукт:
    • реалізує інтерфейс Product;
  • Creator — творець:
    • оголошує фабричний метод, що повертає об'єкт класу Product. Creator може також визначати реалізацію за замовчанням фабричного методу, що повертає об'єкт ConcreteProduct;
    • може викликати фабричний метод для створення об'єкта Product;
  • ConcreteCreator — конкретний творець:
    • заміщує фабричний метод, що повертає об'єкт ConcreteProduct.

Стосунки[ред.ред. код]

Творець покладається на свої підкласи в означенні фабричного методу, котрий буде повертати екземпляр відповідного конкретного продукту.

Реалізація[ред.ред. код]

Python[ред.ред. код]

Java[ред.ред. код]

C++[ред.ред. код]

C#[ред.ред. код]

JavaScript[ред.ред. код]

PHP5[ред.ред. код]

Delphi[ред.ред. код]

[ред.ред. код]

Джерела[ред.ред. код]

Література[ред.ред. код]

Алан Шаллоуей, Джеймс Р. Тротт Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию = Design Patterns Explained: A New Perspective on Object-Oriented Design. — М.: «Вильямс», 2002. — 288 с. — ISBN 0-201-71594-5.