依赖关系图的设计模式
Design pattern for dependency graph
我有一个程序,其中包含许多变量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
更一般的是响应式编程:
https://en.m.wikipedia.org/wiki/Reactive_programming
计算矩阵 m 中图的传递闭包。现在 m(i,j((或 m(j,j((会告诉你事物 i 是否依赖于事物 j。将此(或转置(乘以更改内容的向量(与 j 更改的位置和其他地方的零(将得到您需要更新的内容的向量。
此外,您必须生成严格的偏序并按此排序。
相关文章:
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 资源管理设计模式
- 用于在回调中调用解析器的设计模式
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 在这种情况下我应该使用哪种设计模式
- C++中物体改变识别的设计模式?
- 确保所有构造函数调用相同的函数 c++ 设计模式
- 需要实例化不同类/对象并在启动时确定的硬件插槽的设计模式
- 设计模式,以避免不必要地添加抽象函数以适应新功能
- 工厂设计模式优化
- 使用C++模板的数据映射器设计模式
- 为什么以及如何使用原型设计模式
- 具有多个继承共享一个资源的对象 - 寻找良好的设计模式
- 在C++中创建观察器设计模式的好方法
- 现代C++在多大程度上消除了对设计模式的需求?
- 对于存储另一个类所需信息的类,例如其构造,是否有设计模式?
- 下面抽象工厂设计模式的实现是正确的吗
- sql记录集函数的状态设计模式
- 是否有可以处理方法调用依赖关系的设计模式?
- 依赖关系图的设计模式