Определение в википедии
Шаблон фасад (англ. Facade) — структурный шаблон проектирования, позволяющий скрыть сложность системы путём сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы.

«Приёмы объектно-ориентированного проектирования. Па́ттерны проектирования» (англ. Design Patterns: Elements of Reusable Object-Oriented Software) — книга 1994 года о программной инженерии, описывающая шаблоны проектирования программного обеспечения. Авторами книги, которых прозвали «Бандой четырёх», являются Эрих Гамма, Ричард Хелм, Ральф Джонсон (англ.)рус., Джон Влиссидес.
Теперь мы знаем официальные определение паттерна Фасад и давайте реализуем его на языке Dart.
Создаём класс с конструктором для наших данных, называться он будет Plane
class Plane { final String model; final int numberOfPassangers; final bool isCommerce; const Plane({ required this.model, required this.numberOfPassangers, required this.isCommerce, }); }
Потом создаём необходимые интерфейсы. У нас будет 2 интерфейса и по 2 метода в каждом.
interface class IGetPlane { void getListPlane() {} void saveToFile() {} }
interface class IExport { void exportToExel() {} void exportToWord() {} }
Теперь создаём реализацию наших интерфейсов.
class ExportImpl implements IExport { final Plane plane; const ExportImpl({required this.plane}); @override void exportToExel() { print('Экспорт в Эксель ${plane.model}'); } @override void exportToWord() { print('Экспорт в Ворд'); } }
Не будем нагружать код реальными методами, а просто будем выводить что-то в консоль.
class GetPlaneImpl implements IGetPlane { @override void getListPlane() { print('получить список самолетов'); } @override void saveToFile() { print('Сохранение в файл'); } }
А теперь мы создадим класс Facade, в который мы прокинем данные для наших методов и сделаем инстансы наших классов (ExportImpl и GetPlaneImpl) и сделаем единственный метод run, который будет запускать методы в наших 2х дочерних классах.
class Facade { final Plane plane; Facade(this.plane); late ExportImpl export = ExportImpl(plane: plane); final getPLANE = GetPlaneImpl(); void run() { print(plane.model); getPLANE.getListPlane(); export.exportToExel(); } }
Давайте теперь перейдём в main. Создаём наш самолёт с необходимыми данными. Делаем инстанс класса Фасад и вызываем метод run, который объединил в себе вызов внутренних методов других классов.
void main() { Plane plane = const Plane( model: 'Cesna 172', numberOfPassangers: 4, isCommerce: false, ); Facade(plane).run(); }
Давайте запустим и посмотрим, что из этого выйдет!

Ну что же поздравляю, всё работает! Итак, мы с помощью языка Dart разобрали как организовать паттерн Фасад.
