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

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

10 ноября 2017

Пусть имеется класс SecuritySystem

class SecuritySystem
{
    public function enableHallSecuritySystem()
    {
       ...
    }

    public function enableBathroomSecuritySystem()
    {
       ...
    }

    public function enableDiningRoomSecuritySystem()
    {
       ...
    }

    public function enableLobbySecuritySystem()
    {
       ...
    }

    public function disableHallSecuritySystem()
    {
       ...
    }

    public function disableBathroomSecuritySystem()
    {
       ...
    }

    public function disableDiningRoomSecuritySystem()
    {
       ...
    }

    public function disableLobbySecuritySystem()
    {
       ...
    }
}

 

Создадим "Фасад", включающий или выключающий охрану всего дома:

class SecuritySystemFacade
{
    protected $system;

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

    public function turnOn()
    {
        $this->system->enableHallSecuritySystem();
        $this->system->enableBathroomSecuritySystem();
        $this->system->enableDiningRoomSecuritySystem();
        $this->system->enableLobbySecuritySystem();
    }

    public function turnOff()
    {
        $this->system->disableHallSecuritySystem();
        $this->system->disableBathroomSecuritySystem();
        $this->system->disableDiningRoomSecuritySystem();
        $this->system->disableLobbySecuritySystem();
    }
}

 

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

$system = new SecuritySystemFacade(new SecuritySystem());
$system->turnOn();
$system->turnOff();



Источники:

http://designpatternsphp.readthedocs.io/ru/latest/Structural/Facade/README.html
https://habrahabr.ru/company/mailru/blog/325492/