Задание
Last modified: 08 April 2025Условие
Реализуйте систему для управления различными устройствами умного дома с использованием паттерна "Мост". У вас есть два типа устройств: телевизоры и лампочки. Каждое устройство может иметь несколько разных производителей, например, "Sony" и "Samsung" для телевизоров, "Philips" и "IKEA" для лампочек.
Необходимо создать абстракцию для устройств и конкретные реализации для каждого производителя. Также требуется создать интерфейс для управления этими устройствами, включающий методы включения, выключения и изменения состояния (например, смена канала для телевизора или изменение яркости для лампочки).
Требования
Создайте интерфейс
Device
, который определяет методыturn_on()
,turn_off()
иset_state(state)
.Реализуйте конкретные классы устройств:
TV
иLight
, которые будут использовать интерфейсDevice
.Создайте абстракцию
RemoteControl
, которая будет взаимодействовать с устройствами через интерфейсDevice
.Реализуйте конкретные классы производителей, например,
SonyTV
,SamsungTV
,PhilipsLight
,IKEALight
.Создайте клиентский код, который демонстрирует использование созданной системы.
Пример использования
# Клиентский код
def main():
sony_tv = SonyTV()
samsung_tv = SamsungTV()
philips_light = PhilipsLight()
ikea_light = IKEALight()
remote_for_sony = RemoteControl(sony_tv)
remote_for_samsung = RemoteControl(samsung_tv)
remote_for_philips = RemoteControl(philips_light)
remote_for_ikea = RemoteControl(ikea_light)
remote_for_sony.turn_on()
remote_for_sony.set_state("HBO")
remote_for_sony.turn_off()
remote_for_samsung.turn_on()
remote_for_samsung.set_state("CNN")
remote_for_samsung.turn_off()
remote_for_philips.turn_on()
remote_for_philips.set_state("75%")
remote_for_philips.turn_off()
remote_for_ikea.turn_on()
remote_for_ikea.set_state("50%")
remote_for_ikea.turn_off()
if __name__ == "__main__":
main()