我一直在閱讀有關如何在C實施適當的MVC++應用程序,基本上來到了這一點,有2種方式實現這一點:C++「雙向」觀察者模式
- 觀察者模式
- 信號/插槽
然而,在這兩種情況下,我讀了所有的exemples跟隨,在向被攝體可以改變並通知它的觀察者(S)的結構,但觀察者永遠不變的主題。現在這種情況出現了一些「問題」。
比方說,我有一個名爲Text(一個模型組件)的類,另一個名爲TextEditor(一個GUI組件),它通常顯示'文本',並且應該能夠修改它和其他幾個可以修改'文字「。
對,所以我使用觀察者模式,使'文本'的主題和'文本編輯器'的觀察員。沒什麼大不了。
如果以某種方式更改「文本」,則文本將調用Text :: notify(),並且我的TextEditor將反映更改。精細。
現在,如果我使用TextEditor來修改文本,該怎麼辦?
'TextEditor'知道'Text',所以它調用類似於textInstance.setText(...) ...並且在setText結尾處,'Text'調用notify,'TextEditor'被通知改變了它自己! '文本'甚至不能發送通知給除'TextEditor'之外的所有人,因爲它不是想知道它是觀察者!
我有這樣的感覺,這是不對的,不是「乾淨」,甚至表現的理由。 我敢打賭有一個更好的方法來實現這個,但我卡住了。任何人都有提示?
我不是真的期待預先製作的C++實現,但更多的是理解我應該如何正確看待事情。
非常明確的解釋,謝謝 – Dinaiz 2010-11-24 15:02:44