Patterns: Factory Method (Фабричний метод) 1


Загалом патерн “Фабричний метод” нам уже, можна сказати, знайомий (прир умові що ми читали попередню статтю про абстрактну фабрику алкоголю). Де ж там фабричний метод? Та десь у тій частині, де Марічка та Іванко подавали бабі Парасці пляшки з зовсім не фабричним алкоголем… Давайте розглянемо детальніше взаємодію цих трьох персонажів, але спочатку подивимося на нагуглену діаграму класів:

Factory method

Як ми бачимо, тут є якийсь інтерфейс Product і є якась штука Creator, яка цей продукт створює, причому у ній реалізовано якраз той самий фабричний метод. Що у нас тут є продуктом? А “продуктами” виступають бабусині внуки Іванко та Марічка; сама ж баба Параска, як завжди, є посередником і грає роль “фабрики” – вона просто кличе того чи іншого помічника і просить його збігати за пляшкою. Як і в попередній статті, Іванко подає горілку, а Марічка – коньяк 🙂

public interface Помічник {
    public void подайПляшку();
}

public class Іванко implements Помічник {
    public void подайПляшку() {
        System.out.println("Іванко подає пляшку горілки");
    }
}

public class Марічка implements Помічник {
    public void подайПляшку() {
        System.out.println("Марічка подає пляшку коньячку");
    }
}

Баба параска ж просто отримує від клієнта замовлення і вирішує кого з онуків кликати. Для простоти фабричний метод зроблено статичним, щоб не довелося створювати екземпляр баби Параски:

public class Параска {
    //Фабрика бухла :)
    public static Помічник аговОнучку(String drinkType) {
        Помічник helper = null;
        if ("горілки".equals(drinkType))
            helper = new Іванко();
        else if ("коньяку".equals(drinkType))
            helper = new Марічка();
        return helper;
    }
}

А от як воно все працює: баба Параска кличе когось із онуків і викликає на ньому метод подайПляшку()

public class Main {
    public static void main(String[] args) {
        Параска.аговОнучку("горілки").подайПляшку();
    }
}

І наглядно картинкою:

Factory method

Ось такі справи. Наостанок ще раз нагадую що зловживання алкоголем шкодить здоров’ю і додаю посилання на приклади реалізації фабричного методу у Java:

Почитайте ще оце:


Залиште коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Думка на тему “Patterns: Factory Method (Фабричний метод)