У нас есть решение Visual C ++ 2013 (C ++ 11), в котором есть несколько компонентов.Я хотел бы уведомить другие компоненты в случае каких-либо изменений в любом компоненте.Не всегда каждый компонент должен знать каждое изменение.Я имею в виду, что
Допустим, у меня есть компоненты A, B, C и D
В компоненте A есть изменения. Компоненты B, C и Dнеобходимо знать об изменении в компоненте A.
Существует изменение в компоненте B. Компонентам A и C необходимо знать об изменении в компоненте B.
- Произошло изменение в компоненте C. Компоненты A, B и D должны знать об изменении в компоненте B.
- Произошло изменение в компоненте D. Никто не должен знать.
Для этого мы имеем в виду три идеи, и я хотел бы знать, какой может быть лучший путь, конечно, что-либо кроме этих трех идей более чем приветствуется.
Идея1:
- Компоненты A, B, C и D имеют метод (функцию x), который можно вызвать, чтобы сообщить ему, что изменение произошло.Скажем, если произойдет изменение в компоненте A, A будет напрямую вызывать функцию x каждого из других компонентов, которые необходимо проинформировать.
Идея 2:
- Компоненты A, B, C и D имеют метод (функцию x), который может быть вызван, чтобы сообщить ему, что изменение произошло.Каждый компонент публикует событие, когда в нем происходит изменение.Другие компоненты регистрируются в компонентах, только если они заинтересованы в них, чтобы получать сообщения об изменениях в зарегистрированном компоненте.Компонент после получения сообщения обрабатывает его, вызывая его метод x.
Идея 3:
- Компоненты A, B, C и D имеют метод (функция x) который может быть вызван, чтобы сообщить ему, что произошли изменения.Каждый компонент публикует событие, когда в нем происходит изменение.Сообщение достигает всех компонентов, и получатель решает, нужно ли ему обработать сообщение на основе отправителя сообщения, и поэтому вызывает или не вызывает его метод x.
Факторы, которые мы рассматриваем вРешением являются
- Производительность
- Наименьшая сложность в реализации
- Простота реализации