Oop 什么';面向数据的程序和数据驱动的程序有什么区别?

Oop 什么';面向数据的程序和数据驱动的程序有什么区别?,oop,c++11,data-driven,data-oriented-design,Oop,C++11,Data Driven,Data Oriented Design,我对面向数据的设计略知一二,比如说,与其为单个对象创建一个类,不如创建一个包含多个对象的类,比如,而不是: struct Circle { int x, y; int radius; }; 你应该: struct Circles { std::vector<int> xpos; std::vector<int> ypos; std::vector radii }; 结构圆{std::vector xpo;std::vector ypo;std::vector rad

我对面向数据的设计略知一二,比如说,与其为单个对象创建一个类,不如创建一个包含多个对象的类,比如,而不是:

struct Circle { int x, y; int radius;  };
你应该:

struct Circles { std::vector<int> xpos; std::vector<int> ypos; std::vector radii };
结构圆{std::vector xpo;std::vector ypo;std::vector radii}; (我希望这是对面向数据设计的正确解释)
但是,是否有一种数据驱动的方法来实现这一点或做什么?

这两者并不相关。数据驱动编程是关于消耗和产生信息流的过程。思考:在管道中链接在一起的Unix命令。 DDP覆盖的管线不止一条;输入和输出的图形网络;甚至输出路由也取决于输入。在一个过程中,协同程序网络可以是数据驱动编程的一个例子。维基百科的文章很好地涵盖了这一点


面向数据的设计注重复杂数据的存储方式;以提高缓存效率,或通过生成副本消除锁争用。数据的列存储与行存储是国防部的数据库应用程序。作为一个副作用,国防部似乎与OOD交锋;后者试图隐藏对象库数据。国防部公开数据,因此用户可以选择以最适合实际存储的方式处理结构化收集。维基百科的文章有点单薄。

为什么不把两者结合起来,这样你就有了一个
std::vector圆圈
?@Someprogrammerdude我想这可能是因为它是面向数据的而不是面向对象的,代码的灵感来源于这个答案:根据答案,你做这件事的方式是面向对象的方法,而不是国防部的方法。所以,数据驱动编程更像是一个不协调的机器人[IIRC那些东西使用协同程序]虽然面向数据的可能是粒子系统之类的东西,但我承认对Discord机器人一无所知。协同程序是ddp的一小部分。当一个银行网络在彼此之间点燃交易流时,ddp就变得有趣起来。粒子系统闻起来像DDP:许多独立的部分在说话。国防部重点关注硬时间限制和大量数据。查看youtube上的“迈克·阿克顿”:一位(游戏)专家和健谈者。国防部通常比(比如)面向对象设计更接近金属。。。但我发现国防部适用于高级设计,特别是在DDP情况下:-)hth