Фасад (Facade) :: Cетевой уголок Majestio

Фасад (Facade)


Фасад — это структурный паттерн проектирования, который предоставляет простой интерфейс к сложной системе классов, библиотеке или фреймворку.

Применимость

Подробнее на 👉 refactoring.guru

UML-диаграмма

Пример реализации

#include <iostream>

// Сложная подсистема

class Engine {
 public:
  void setEngine() { std::cout << "Устанавливаем двигатель" << std::endl; }
};

class Body {
 public:
  void setBody() { std::cout << "Устанавливаем кузов" << std::endl; }
};

class Interior {
 public:
  void setInterior() { std::cout << "Устанавливаем интерьер" << std::endl; }
};

// Фасад, предоставляющий простой интерфейс для сложной подсистемы

class CarFacade {
 private:
  Engine engine;
  Body body;
  Interior interior;

 public:
  void buildCar() {
    engine.setEngine();
    body.setBody();
    interior.setInterior();
    std::cout << "Автомобиль построен" << std::endl;
  }
};

int main() {
  CarFacade carFacade;
  carFacade.buildCar();

  return 0;
}
Будет напечатано:
Устанавливаем двигатель
Устанавливаем кузов
Устанавливаем интерьер
Автомобиль построен
// Сложная подсистема

class Engine {
  void setEngine() {
    print('Устанавливаем двигатель');
  }
}

class Body {
  void setBody() {
    print('Устанавливаем кузов');
  }
}

class Interior {
  void setInterior() {
    print('Устанавливаем интерьер');
  }
}

// Фасад, предоставляющий простой интерфейс для сложной подсистемы

class CarFacade {
  Engine _engine = Engine();
  Body _body = Body();
  Interior _interior = Interior();

  void buildCar() {
    _engine.setEngine();
    _body.setBody();
    _interior.setInterior();
    print('Автомобиль построен');
  }
}

void main() {
  CarFacade carFacade = CarFacade();
  carFacade.buildCar();
}
Будет напечатано:
Устанавливаем двигатель
Устанавливаем кузов
Устанавливаем интерьер
Автомобиль построен
Рейтинг: 0/5 - 0 голосов