Статья
Шаблон проектирования "Абстрактная фабрика"

Шаблон проектирования "Абстрактная фабрика"

8 декабря 2017

Позволяет создать ряд связанных или зависимых объектов без указания их конкретных классов.
Обычно создаваемые классы стремятся реализовать один и тот же интерфейс.
Клиент абстрактной фабрики не заботится о том, как создаются эти объекты, он просто знает, по каким признакам они взаимосвязаны и как с ними обращаться.

abstract class AbstractFactory
{
    abstract public function createText($content);
}

class JsonFactory extends AbstractFactory
{
    public function createText($content)
    {
        return new JsonText($content);
    }
}

class HtmlFactory extends AbstractFactory
{
    public function createText($content)
    {
        return new HtmlText($content);
    }
}

abstract class Text
{
    private $text;

    public function __construct($text)
    {
        $this->text = $text;
    }
}

class JsonText extends Text
{
    // ...
}

class HtmlText extends Text
{
    // ...
}

 

Использование:

$factory = new HtmlFactory();
$text = $factory->createText('text');



Источники:

http://designpatternsphp.readthedocs.io/ru/latest/Creational/AbstractFactory/README.html