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