Шаблон проектирования Factory method

Шаблон проектирования Factory method (Фабричный метод, Виртуальный конструктор) делегирует создание объектов наследникам родительского класса. Он позволяет сделать код создания объектов более универсалным, не привязываясь к конкретным классам (ConcreteProduct), а оперируя лишь интерфейсом (Product).

Используеться когда:

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

UML диаграмма классов шаблона Factory method

UML диаграмма классов шаблона Factory method

Пример использования шаблона программирования Singleton:

interface RenderPage { // Product
    public function render();
}

class RenderHtmlPage implements RenderPage { // ConcreteProductA
    public function render() {
        echo 'Page in HTML format';
    }
}

class RenderXmlPage implements RenderPage { // ConcreteProductB
    public function render() {
        echo 'Page in XML format';
    }
}

interface Creater { // Creator
    public function create();
}

class CreateHtmlPage implements Creater { // ConcreteCreatorA
    public function create() {
        return new RenderHtmlPage();
    }
}

class CreateXmlPage implements Creater { // ConcreteCreatorB
    public function create() {
        return new RenderXmlPage();
    }
}

$htmlCreater = new CreateHtmlPage();
$xmlCreater = new CreateXmlPage();

$htmlCreater->create()->render();

Метки: ,

Комментарии (2) на “Шаблон проектирования Factory method”

  1. Юра:

    Хорошая статья. Очень часто подобные задачи встречались когда я начинал прогать, ото я намучался не зная этого шаблона)))

  2. Юра:

    Abstract Factory намного легче дается после освоения этого шаблона. Не повторяйте мои ошибки, не учите сначала Abstract, а потом Method Factory, ато надолго зависните)))

Оставить комментарий

Вы должны авторизоваться для отправки комментария.