@indigo_style

Должены ли внутри Facade (pattern) создаваться объекты?

Посмотрел примеры, и так и не понял, должны ли внутри фасада создаваться объекты.
Примеры на php, взяты из статей.
class Facade
{
    public function transfer($amount)
    {
        $Bank = new Bank();
        $Client = new Client();
        $Log = new Log();

        $Bank->OpenTransaction();
        $Client->OpenTransaction();
        $Log->logTransaction('Transaction open');

        $Bank->transferMoney(-$amount);
        $Log->logTransaction('Transfer money from bank');

        $Client->transferMoney($amount);
        $Log->logTransaction('Transfer money to client');

        $Bank->CloseTransaction();
        $Client->CloseTransaction();
        $Log->logTransaction('Transaction close');
    }
}

или правильно делать так
class Facade
{
    private $os;
    private $bios;

    public function __construct(BiosInterface $bios, OsInterface $os)
    {
        $this->bios = $bios;
        $this->os = $os;
    }

    public function turnOn()
    {
        $this->bios->execute();
        $this->bios->waitForKeyPress();
        $this->bios->launch($this->os);
    }

    public function turnOff()
    {
        $this->os->halt();
        $this->bios->powerDown();
    }
}

Заранее благодарю.
  • Вопрос задан
  • 164 просмотра
Решения вопроса 2
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Второе. Лучше предоставлять зависимости извне, и не только для фасада, но и вообще.
Ответ написан
Комментировать
@developer007
У вас в фасаде бизнес логика - по сути это сервис.

Фасад тупо должен агрегировать методы вызова внутренних сервисов какого либо компонента

https://refactoring.guru/ru/design-patterns/facade
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы