Назад к вопросам
Middle
71
questionbank
Что такое фасад (Facade) в контексте программирования и как он используется?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Паттерн проектирования, предоставляющий унифицированный интерфейс к набору интерфейсов в подсистеме. Он определяет высокоуровневый интерфейс, делающий подсистему проще в использовании.
Использование:
- Упрощение сложной системы, предоставляя единую точку входа.
- Снижение связанности между клиентом и подсистемой, позволяя изменять внутреннюю структуру подсистемы без воздействия на клиента.
- Предоставление ограниченного набора операций для клиента, скрывая детали реализации.
Пример:
# Подсистема
class Amplifier:
def on(self):
print("Amplifier on")
def off(self):
print("Amplifier off")
def set_volume(self, volume):
print(f"Amplifier volume set to {volume}")
class Tuner:
def on(self):
print("Tuner on")
def off(self):
print("Tuner off")
def set_frequency(self, frequency):
print(f"Tuner frequency set to {frequency}")
# Фасад
class HomeTheaterFacade:
def __init__(self, amp, tuner):
self._amplifier = amp
self._tuner = tuner
def watch_movie(self, movie):
print("Get ready to watch a movie...")
self._amplifier.on()
self._amplifier.set_volume(5)
self._tuner.off() # Предположим, тюнер не нужен для фильма
def end_movie(self):
print("Shutting down home theater...")
self._amplifier.off()
self._tuner.off()
# Клиентский код
# amp = Amplifier()
# tuner = Tuner()
# home_theater = HomeTheaterFacade(amp, tuner)
# home_theater.watch_movie("Inception")
# home_theater.end_movie()