Шаблон фасада используется для маскировки сложной логики и создания интерфейса для выполнения логики, а также для управления сторонними плагинами в приложении.
Например, мы делаем вызовы службы http в нашем приложении, чтобы получить данные с сервера. В настоящее время мы используем библиотеку «axios» для выполнения http-вызовов на каждой странице, если нужно внести изменения, заменив метод «fetch» axios на JavaScript, мы должны внести изменения на всех страницах.
Таким образом, вместо того, чтобы вызывать метод axios на всех страницах, мы создадим JS-файл, который импортирует библиотеку axios и сделает вызовы на сервер, создав в этом файле пользовательские функции и предоставив его всем страницам, что уменьшит влияние переход от axios к методу fetch, так как теперь нам нужно изменить в одном файле, а всем остальным страницам не нужно заботиться о том, что используется под капотом.
Пример кода — приложение React со страницами пользователей и сообщений
Страница пользователей — Users.js
Страница сообщений — Posts.js
Здесь мы используем axios в функциях getUsers(), getPosts() и addPosts(), теперь, если есть изменение для перехода от axios к выборке, нам нужно внести изменения во все функции, где используется axios из этих двух страниц. Поэтому вместо этого мы можем создать файл http-service.js для управления операциями этой сторонней библиотеки.
http-service.js — версия Axios
Теперь функции getUsers(), getPosts() и addPosts() будут выглядеть, как показано ниже,
Теперь обновление заменяется методом выборки, изменение можно внести в файл http-service.js, и обновление завершено.
После обновления http-service.js:
Мы можем расширить эту логику службы http для обработки маршрутов аутентификации и неавторизации, добавив токены аутентификации только с использованием запросов службы аутентификации.
Это небольшой вариант использования, в котором мы можем найти шаблон Façade, мы можем использовать ту же технику для управления другими сторонними библиотеками для построения диаграмм, карт и т. д., а также мы можем переместить общую логику со страниц и сгруппировать ее в образуют общий интерфейс.
Удачного кодирования!!!