我正在用 C++ 创建一个 MVC 应用程序,我希望较低级别的模型类能够使用简单的文本更新 GUI 以向读者显示输出。我不想传递函数或对象指针,因为它会变得困惑,我将不得不传递它们到各处。我本质上想要的是相当于控制台 GUI 的“cout”——某种全局函数,可以调用它来从任何地方更新 GUI,而无需了解有关 GUI 的任何信息。
我在标题中提到了观察者模式,因为它听起来很像——GUI 可以以某种方式订阅这个全局对象或函数,并在它被调用时监听。但是,我并不是专门寻找使用 Observer 的解决方案。
人们向我提到了信号和插槽,但可以肯定的是,除非是全局的,否则您仍然需要“传递东西”以允许对象发出信号。同样,全局引用点会有所帮助。
我如何才能做到这一点,同时确保遵守良好的设计原则?
最佳答案
的确,这里使用观察者模式似乎很合适。但是,我认为你在这里有一些错误。您需要明确定义每个参与方的角色。我会建议以下分区:GUI 是观察者(即监听器),较低级别的对象是向监听器发出更改信号的对象。初始化后,较低级别的模块将向 GUI(观察者)注册自己。一旦发生变化,下层模块将执行提供所需数据作为输入的观察者的公共(public)监听处理程序。
这将使您能够实现您的目标,并且该计划不涉及任何全局变量。
关于c++ - 在 C++ 中使用全局 update() 函数的观察者模式(或类似的东西)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15040756/