По сути, шаблон наблюдателя всегда удобно использовать, если у вас есть источник данных и получатель, и вы хотите обеспечить слабую связь между ними.
Если ваш класс Core хранит непосредственно экземпляр вашего компонентавам не нужен дополнительный шаблон наблюдателя между ними, так как класс Core может напрямую вызывать методы вашего компонента, верно?
Итак, вам понадобится любая связь / косвенная связь между вашим Ядром и вашим Компонентом для отправки сообщений, и там вы должны использовать Observer.Вы можете передать себя в качестве наблюдателя своему компоненту при создании его экземпляра.
Но на самом деле, я думаю, что это главная проблема проектирования в вашей архитектуре, вы должны использовать MVC для таких приложений:
MVC
В этом случае вам придется разделить Ядро на Контроллере (для обработки взаимодействий пользовательского интерфейса, т.е. отправки / получения сообщений) и Модели (для хранения сообщений и метаданных., может быть, логика приложения).Ваш Компонент будет классом View.