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

Когда использовать? Когда нужно упростить работу со сложной системой (например, библиотекой или legacy-кодом). Когда требуется разделить подсистему на слои (фасад — это "точка входа" в подсистему). Для минимизации зависимостей между клиентским кодом и внутренними классами.

Реализация паттерна "Фасад" в Python Пример: Упрощенный API для работы с мультимедийной системой `# Сложные подсистемные классы class VideoPlayer: def play_video(self, filename): print(f"Воспроизведение видео: {filename}")

class AudioPlayer: def play_audio(self, filename): print(f"Воспроизведение аудио: {filename}")

class Display: def show(self, message): print(f"Дисплей: {message}")

#Фасад (упрощенный интерфейс)

class MultimediaFacade: def init(self): self.video_player = VideoPlayer() self.audio_player = AudioPlayer() self.display = Display()

def play_movie(self, video_file, audio_file): self.display.show("Загрузка медиа...") self.video_player.play_video(video_file) self.audio_player.play_audio(audio_file) self.display.show("Фильм запущен")

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

if name == "main": facade = MultimediaFacade() facade.play_movie("movie.mp4", "sound.mp3") Вывод: Дисплей: Загрузка медиа... Воспроизведение видео: movie.mp4 Воспроизведение аудио: sound.mp3 Дисплей: Фильм запущен

Где используется: 1. Библиотеки для работы с API (например, requests — фасад для HTTP-запросов). 2. ORM-системы (например, Django ORM — фасад для работы с БД). 3. Графические библиотеки (например, matplotlib — фасад для сложных графических операций).

Пример без фасада (плохо 👎): `# Клиент должен знать все детали подсистемы player = VideoPlayer() audio = AudioPlayer() player.play("movie.mp4") audio.play("sound.mp3")

Пример с фасадом (хорошо 👍): `multimedia = MultimediaFacade() multimedia.play_movie("movie.mp4", "sound.mp3")

#weekofpatterns```
repost

29

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь