Все новости с тэгом SOLID

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

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

<?php
class Something
{
    private $collaborator;

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

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

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

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

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