Проста фабрика () — ідіома програмування, яка полягає в інкапсуляції (приховуванні) в окремому класі екземплярів інших класів.

Використання Основна ідея полягає в приховуванні від клієнта подробиць створення об'єкта. Реалізація проста: клієнт не має прямого доступу до конструктора, потрібний йому об'єкт (продукт) повертає метод об'єкта класу фабрики.

Одна фабрика може мати багатьох класів-клієнтів. Також клас фабрика є єдиною частиною програми, що працює з конкретними класами продуктів.

Однією з основних проблем простої фабрики є сильне зв'язування. Для створення екземплярів потрібно використовувати конкретний клас, а не інтерфейс.

Приклад цієї ідіоми можна знайти в деяких класичних шаблонах програмування (наприклад, будівельник).

Приклад мовою С# class HungryMan { public void Eat(string type)

PizzaProducts.PizzaBar pb = new PizzaProducts.PizzaBar(); PizzaProducts.Pizza p = pb.Cookpizza(type);

namespace PizzaProducts { abstract class Pizza

protected string ptype; public override string ToString()

return ptype;

class NewYorkPizza : Pizza

internal NewYorkPizza() { ptype = "New York Pizza"; }

class ItalianPizza : Pizza

internal ItalianPizza() { ptype = "Italian Pizza"; }

class PizzaBar

public Pizza Cookpizza(string type)

switch (type)

case "NewYork": return new NewYorkPizza(); case "Italian": return new ItalianPizza(); default: return null;

У даному прикладі клас HungryMan - клас-клієнт, PizzaBar - клас-фабрика, ItalianPizza та NewYorkPizza - класи-продукти. Клас PizzaBar повертає певний об'єкт класу продукту залежно від отриманих параметрів. При цьому логіка приготування піци інкапсульована в методі Cookpizza(). Об'єкт класу HungryMan викликає цей метод для отримання своєї піци.