我有一个程序,其中包含多个变量 A、B、C...,它们之间存在依赖关系。例如,C 的值取决于 A 和 B 的值。每当变量的值发生变化时,我都需要更新其所有下游变量。例如,如果 A 的值发生变化,我将需要重新计算 C 的值。如果 C 的值也改变了,我将需要重新计算那些依赖于 C 的变量的值。现在我有这样的代码:
A a;
B b;
C c;
// ...
void updateC()
{
C newC = calculateC(a, b);
if (c != newC)
{
c = newC;
updateD();
updateE();
}
}
随着变量数量的增加,这段代码很难维护。还有一些复杂的逻辑,比如updateD成功了就不用调用updateE。是否有针对此类问题的标准设计模式或库?
最佳答案
本质上,您需要解耦对象 A、B、C...,这可以使用中间人实现,即中介者模式:
https://en.m.wikipedia.org/wiki/Mediator_pattern
使用事件总线模式:
http://wiki.c2.com/?DataBusPattern
使用发布-订阅模式:
https://en.m.wikipedia.org/wiki/Publish-subscribe_pattern
观察者模式:
https://en.m.wikipedia.org/wiki/Observer_pattern
更普遍的响应式(Reactive)编程:
关于c++ - 依赖图的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602540/