Питоновское
09.05
Фасад — это структурный паттерн проектирования, который предоставляет простой интерфейс к сложной системе классов, библиотеке или фреймворку. Он скрывает сложность внутренних компонентов и предоставляет клиенту удобный 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```еще контент в этом сообществе
еще контент в этом соообществе
Питоновское
09.05
войдите, чтобы увидеть
и подписаться на интересных профи