У меня есть проект, который я выложил так:Python - проверка исправности по проектированию программы
User
Interface
Interface Handler
Main
Network Handler
Networks
Elements Handler
Elements
Интерфейс является графический интерфейс, главное, очевидно, сети являются обертками для элементов и определения их взаимодействия , элементы - наименьшие компоненты. Это домашняя система безопасности/автоматизации, элементы - это такие вещи, как датчики ZWave, телефоны Android, огни, телевизор и т. Д., Сети обертывают их в логические группы, такие как ZWave или Lights или Station (телефоны Android, используемые с веб-камерой IP, их через Soundwire и т. д.).
Вот проблема - углубляясь в проект, это становится беспорядком. Я использовал идею о том, что уровни ниже не могут знать о уровнях выше, но выше могут знать около 1 уровня ниже (кроме интерфейса, который ничего не знает о чем-либо) и может только взаимодействовать с уровнем выше него и делает это через pubsub только с абстрактными сообщениями, которые может представлять интерес. Идя вниз, я просто использую вызовы метода объекта, изменения атрибутов объекта и т. Д. Я правильно подошел? Как только я начну реализовывать сложные взаимодействия, например, когда сработает датчик и активирован сигнал тревоги, происходит множество событий: все включаются, мониторы переключаются на запись обнаружения движения, отправляется электронное сообщение со снимками и т. Д. Эти взаимодействия запутываются, и я решил тесно связать вещи. Когда я пытаюсь свободно спарить, я в конечном итоге создаю новые языки, чтобы все говорило на одном языке.
Одна из основных проблем заключается в том, что у меня есть совершенно разные элементы. ZWave говорит через OpenZWave, станции андроида говорят через Zoneminder и/или звуковую дорожку, свет говорит через http и т. Д. Я правильно подошел? Есть ли лучший общий шаблон проектирования, который я должен моделировать? Благодарю.
Я думаю, что это сообщение лучше подходит для [Обзор кода] (http: //codereview.stackexchange. ком /); поскольку он слишком широк для этого сайта. –