Я собираюсь создать тестовую среду для устройств IoT, которые работают по-разному и взаимодействуют по различным протоколам.Чтобы добиться этого и оставаться открытым для расширений, я отделил устройства и их протоколы друг от друга.Следующая диаграмма описывает текущую структуру приложения:
Я думаю, что этот вид реализации является структурно правильным, потому что устройство имеет конфигурацию и(заменяемый) MessageHandler.Это означает, что IOTDevice не заботится о том, как сообщение отправляется по сети.
Проблема: Когда я получаю сообщение извне (т. Е. MessageHandler получает сообщение, вызывается метод handle),Я хочу иметь возможность выполнить предопределенное поведение, которое определено в одном из классов IOTDev_X (то есть вызвать метод doX (), doY () или doZ ()).Но MessageHandler ничего не знает об IOTDevice.Таким образом, невозможно вызвать определенный метод, когда он получает входящее сообщение.
Одним из решений, о котором я думал, было бы то, что MessageHandler содержит IOTDevice.Но, с моей точки зрения, это похоже на плохой дизайн.
Что было бы хорошим методом для преодоления этой проблемы (в лучшем случае без отказа от полного дизайна).