Я читал о том, как реализовать правильный MVC в C++ приложение и в основном пришел к тому, что есть 2 способа реализации этого:C++ «двунаправленный» шаблон наблюдатель
- шаблон наблюдатель
- сигнал/слот
Однако в обоих случаях exemples я прочитал все следуют структуру, в которой субъект может изменить и уведомить его наблюдатель (s), но наблюдатель никогда не меняет тему. Теперь в этих случаях возникает несколько «проблем».
Предположим, у меня есть класс под названием Text (компонент модели), другой класс называется TextEditor (компонент GUI), который каким-то образом отображает «Текст» и должен иметь возможность его модифицировать и несколько других классов, Текст ".
Правильно, поэтому я использую шаблон наблюдателя, создаю «Текст» темы и «Текстовый редактор» наблюдателя. Ничего страшного.
Если «Текст» каким-то образом изменен, текст вызывает Text :: notify(), и мой TextEditor отразит это изменение. Хорошо.
Теперь, если я использую TextEditor для изменения текста?
«TextEditor» знает о «тексте», поэтому он вызывает что-то вроде textInstance.setText (...) ... и в конце setText сообщения «Text» уведомляются, а «TextEditor» уведомляется о изменение сделало это! «Текст» не может даже отправлять уведомление всем, кроме «TextEditor», потому что не стоит знать о его наблюдателях!
У меня такое ощущение, что это неправильно, а не «чистые», даже соображения производительности. Держу пари, что есть лучший способ реализовать это, но я застрял. У кого-нибудь есть намеки?
Я не очень-то ищу работу с C++-реализацией, но в большей степени понимая, как я должен правильно ее видеть.
Очень ясно explananation, спасибо – Dinaiz 2010-11-24 15:02:44