Инструменты пользователя

Инструменты сайта


pattern_factory_method

Назад

Фабричный метод определяет интерфейс создания объекта, но оставляет подклассам решение о том, какой класс инстанциировать. Таким образом фабричный метод позволяет классу делегировать создание экземпляров субклассав.

Используется когда классу заранее неизвестно, объекты каких подклассов ему нужно создавать или класс спроектирован так, чтобы объекты, которые он создаёт, специфицировались подклассами.

Достоинства паттерна Factory Method:
Создает объекты разных типов, позволяя системе оставаться независимой как от самого процесса создания, так и от типов создаваемых объектов.

Недостатки паттерна Factory Method:
В случае классического варианта паттерна даже для порождения единственного объекта необходимо создавать соответствующую фабрику.

AutoCar (Конкретный продукт)
public interface AutoCar
{
    public String getCar();
}
 
class Toyota implements AutoCar
{
    public String getCar()
    {
        return "Toyota";
    }
}
 
class Nissan implements AutoCar
{
    public String getCar()
    {
        return "Nissan";
    }
}
Creator (Конкретный создать)
public interface Creator
{
    public AutoCar create();
}
 
class NissanCreator implements Creator
{
    public AutoCar create()
    {
       return new Nissan();
    }  
}
 
class ToyotaCreator implements Creator
{
    public AutoCar create()
    {
        return new Toyota();
    } 
}
Main
public class Main
{
    public static void main(String[] args)
    {
        Creator creator = new NissanCreator();// - Создатель
 
        AutoCar autoCar = creator.create(); // - продукт
        System.out.println(autoCar.getCar());
 
        creator=new ToyotaCreator();// - интерфейс один - реализаций много
 
        autoCar = creator.create(); // - продукт
        System.out.println(autoCar.getCar());
    }     
}