一个model,两个view
我在做一个小软件,里面涉及到一个模型,还有两个视图:一个是表格,一个是图形显示。这两个视图都有交互性,而且是同步的:当用户选择表格里一行的时候,图形显示里面相应的部分被高亮;当点击图形的时候,表格相应的一行被选择。
下面问题就来了:
假如我这样设置回调来更新它们,就会有严重的问题,因为表格在被更改的时候,会触发一个changed事件,使得changed回调函数又被调用,就绕进去了:
sub on_table_selection_change { select_data;}sub on_graph_clicked { select_data;}sub on_data_selected { change_table; change_graph;}sub on_table_selection_change { change_graph;}sub on_graph_clicked { change_table;}class Model{private: DATA m_data; vector<View *> m_views;public: ModifyData();};class View1 : View{private: Model *m_model;public: void Update();};class View2 : View{private: Model *m_model;public: void Update();};
[解决办法]
好像有一个中介者模式,经常用来做UI的交互