使用继承在 C++ 中为 DCI 模拟角色

Posted

技术标签:

【中文标题】使用继承在 C++ 中为 DCI 模拟角色【英文标题】:Using inheritence to simulate roles in C++ for DCI 【发布时间】:2017-12-11 10:58:26 【问题描述】:

我一直在尝试了解 DCI(数据上下文交互)(http://tidyjava.com/dci-architecture-visionary/)

在我看来,“角色”可以通过创建从基类继承并可以访问所有私有成员的派生类来模拟。这是一个合理的说法吗?

或者,这是否可以被视为过多的基础设施?我的意思是,DCI 似乎是将动作与类分开。这不是很好的 ol' C,你有对结构进行操作的函数吗?

【问题讨论】:

让我想起了实体组件系统,在 c++ 中有相当多的实现。 【参考方案1】:

DCI 对象和结构之间的区别在您链接的页面的前面进行了说明:

DCI 的数据对象与典型实体的主要区别在于 数据对象相对愚蠢。这不是贫血。 可以 仍然包含重要的领域方法,可以保留它的 不变量等

这意味着类仍然可能包含必要的样板文件(getter、setter、构造函数、析构函数和更复杂的东西),以保持其一致性(即确保正确使用它)。因此,实施您的用例无需担心这些问题。

【讨论】:

我猜数据类似于 C 中的 FILE 结构。该结构的实际组件对程序员来说是不透明的,但它确实具有操作它的函数(打开、读取、关闭等)。因此,DCI 似乎提倡回到我们父亲所知道的良好分解原则。

以上是关于使用继承在 C++ 中为 DCI 模拟角色的主要内容,如果未能解决你的问题,请参考以下文章

DCI,“上下文”概念的问题以及相互了解的角色

可以在 DCI 上下文中拥有未绑定的角色吗?

DCI

DCI架构是如何解决DDD战术建模缺点的?

DCI架构是如何解决DDD战术建模缺点的?

设计模式---装饰者模式