Вступление
Шаблон фасада используется как способ скрыть более сложную логику. Фасад может выполнять следующее:
- Улучшить удобство использования библиотеки или API за счет маскировки взаимодействия с более сложными компонентами базового кода.
- Предоставить интерфейсы, зависящие от контекста. Это означает, что каждый клиент API может получить свой собственный фасад, в зависимости от вариантов использования.
Шаблон фасада обычно используется в следующих случаях:
- Подсистема или несколько подсистем имеют тесно связанные элементы.
- В многоуровневом программном обеспечении вам может понадобиться точка входа для каждого уровня.
- В случае очень сложных систем фасад может помочь
На что это похоже? Что ж, это довольно просто:
Класс `Facade` имеет простой интерфейс, скрывающий тот факт, что он может иметь более сложное взаимодействие, например, с `ClassA` и `ClassB`. Этот пример простой, но вы можете себе представить, что в сложных системах существуют десятки или сотни классов, с которыми должен взаимодействовать фасад.
Реализация в Rust
В пустом каталоге откройте свой терминал или командную строку и введите:
Теперь откройте этот каталог в вашей любимой IDE и откройте main.rs файл в вашем каталоге src/.
Мы начнем с определения точечной структуры:
Точка просто получает две координаты, `X` и `Y`. Я также добавил простой конструктор.
Структура `ShapeMaker` поможет нам построить квадрат:
Структура `ShapeMaker` просто получает отправную точку. Он вычисляет вторую точку квадрата в методе `create_square()`, добавляя параметр `size` как к координатам `X`, так и `Y` точки.
Структура `ShapeMeasurer` измеряет расстояние между двумя точками, используя теорему Пифогора:
Наконец, у нас есть измеритель площади, который, исходя из начальной точки и заданного размера, может измерить диагональ квадрата:
Теперь мы можем это проверить:
Строка за строкой:
- Мы создаем новую точку и передаем ее в `SquareMeasurer`.
- Вызывая метод `measure_square_diagonal()`, `SquareMeasurer` вызывает базовые классы, чтобы найти размер диагонали.
- Мы выводим результат. В нашем тестовом примере это должно быть около 4.2.
Вывод
Это не самый сложный шаблон для реализации. Как и в случае с большинством шаблонов проектирования, это просто выглядит как здравый смысл, скрывающий сложность. В следующей статье я надеюсь предоставить вам более сложный пример для этого шаблона.
Статья на list-site.