Проста фабрика () — ідіома програмування, яка полягає в інкапсуляції (приховуванні) в окремому класі екземплярів інших класів.
Використання Основна ідея полягає в приховуванні від клієнта подробиць створення об'єкта. Реалізація проста: клієнт не має прямого доступу до конструктора, потрібний йому об'єкт (продукт) повертає метод об'єкта класу фабрики.
Одна фабрика може мати багатьох класів-клієнтів. Також клас фабрика є єдиною частиною програми, що працює з конкретними класами продуктів.
Однією з основних проблем простої фабрики є сильне зв'язування. Для створення екземплярів потрібно використовувати конкретний клас, а не інтерфейс.
Приклад цієї ідіоми можна знайти в деяких класичних шаблонах програмування (наприклад, будівельник).
Приклад мовою С# 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 викликає цей метод для отримання своєї піци.