Обговорення користувача:Motorna yevheniia

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

Ласкаво просимо!

   Основні засади Вікіпедії   
Ласкаво просимо до україномовної Вікіпедії, Motorna yevheniia!
   Для чого ми розвиваємо Вікіпедію

Вітаємо Вас як нового учасника україномовного розділу Вікіпедії. Сподіваємось на плідну співпрацю з Вами над спільним відкритим проєктом.

Зверніть увагу на наріжні принципи участі: сміливо редагуйте, а в конфліктних ситуаціях, якщо такі виникнуть, завжди розраховуйте на добрі наміри опонента.

Можете скористатися шпаргалкою, якщо Ви ще не знайомі з основами вікірозмітки.

Якщо виникли запитання щодо проєкту або потрібні якісь підказки, пошукайте відповідь на сторінці Довідки. Якщо відповіді на Ваше питання там немає, поставте його у нашій Кнайпі чи комусь із постійних дописувачів.

Кнопка вставки підпису у вікні редагування

На сторінках обговорень бажано ставити автоматичний підпис за допомогою чотирьох тильд (~~~~) або за допомогою позначки підпису у вікні редагування (зображено на малюнку). У статтях, написаних або редагованих Вами, підпис не ставиться.

Ви також можете розповісти про свої інтереси на сторінці інтересів користувачів. Якщо у Вас виникнуть додаткові питання, можете звернутися за порадою до будь-якого користувача з цієї категорії.

Бажаємо успіхів та якнайбільше творчого задоволення!

Велика Британія США Irrespective of your language skills, you are welcome to create your own user page, add interwiki links, upload images, correct data, discuss problems, communicate & cooperate with the community. Please, use language templates from Вікіпедія:Вавилон or create your own ones. You can ask for our help on the Community Portal (help).
   Як створити статтю
   Як редагувати статті
   Ілюстрування статей
   Потренуйтеся тут!
   Правила і настанови
   Стиль оформлення статей
   Авторські права
   Довідка
   Користувачі, що допоможуть Вам
   Словничок вікітермінів

-- Automatic welcomer (обговорення) 17:53, 13 грудня 2017 (UTC)[відповісти]

Проста Фабрика[ред. код]

Проста фабрика(англ. 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 викликає цей метод для отриання своєї піци.