Все новости с тэгом фабрика

Замаскированные зависимости

В наши дни все мы знаем, что внедрение зависимостей — это наилучшая практика, которую мы должны применять каждый раз, когда у объекта есть сотрудник. Вместо того чтобы создавать его на месте (где нам пришлось бы иметь дело с его зависимостями), мы используем внедрение сотрудника:

<?php
class Something
{
    private $collaborator;

    public function __construct( Collaborator $collaborator )
    {
        $this->collaborator = $collaborator;
    }
    
    // ...
}

Этим мы делегируем задачу создания сотрудника куда-нибудь в другое место. А значит, нам не придётся озаботиться созданием сотрудничающего объекта или его зависимостей.

Таким образом, мы можем переместить почти всё создание объекта в одно место: в фабрику. Существуют исключения, например, когда вы не хотите, или вам вовсе не нужно, чтобы фабрика создавала объект. Как правило, объекты-значения и доменные объекты создаются на месте.

Теперь у нас есть фабрика, которая может создавать все наши объекты. Для создания каждого объекта у неё будет по одному методу:

Читать дальше…

Фабрика должна только создавать, а не сохранять

В недавнем разговоре на Reddit, мы подняли тему касательно паттерна проектирования «Фабрика». Я придерживался тогда (и сейчас) мнения, что фабрика всегда и только возвращает новый экземпляр. Если у вас есть фабрика, которая возвращает что-то большее, чем новый экземпляр, то это не просто фабрика. В случае фабричных методов, это фабрика + метод доступа (аксессор); в случае фабрики, это фабрика + реестр (registry).

Читать дальше…