我有一个工具栏控制器,它能够通过查询文档属性或应用程序框架来更新工具栏状态(启用/禁用,按下/未按下)。我有一些代表视图当前状态的按钮。
从应用程序设计的角度来看,我喜欢让工具栏控制器能够在给定文档的任何时候更新按钮状态。我也更喜欢工具栏控制器&按钮处理程序没有内部状态。
我看到的选项 - 寻找其他建议:
答案 0 :(得分:0)
您可以尝试为视图设置事件循环,并使用函数调用调度来更新状态
像这样:
class ViewEventArgs{
public:
int eventNumber;
};
class ViewEvent{
public:
virtual void onViewChange(ViewEventChangeArgs args) = 0;
};
class ViewController{
public:
virtual void doPressed() = 0;
virtual void doChecked() = 0;
//other interface methods
};
class ToolbarView : public ViewEvent{
public:
//Your EVENT-LOOP kernel will fire these events depending upon the state change in the view
void onViewChange(ViewEventChangeArgs args)
{
switch(args.eventNumber){
case PRESSED:
getToolbarController()->doPressed();//the method dispatch
break;
case CHECKED:
getToolbarController()->doChecked();
}
}
//other parts of the view
};
class ToolbarController: public ViewController{
public:
void doPressed() { /*pressed*/ }
void doChecked() { /*checked*/ }
//implementations
};