gpt4 book ai didi

C++ DLL 依赖状态模式

转载 作者:太空宇宙 更新时间:2023-11-04 13:36:51 27 4
gpt4 key购买 nike

在我的作业中,我创建了一个 Robot 类,它有一个指向类 State 的指针。这个 State 类是一个接口(interface)。 State 子类的实际实现需要在单独的 DLL 中完成。

我已经能够在单独的 DLL 中成功地创建这些类,因此带有 State 子类的 DLL (StateDLL) 仅引用包含 State 接口(interface)类的 DLL。

问题始于 Robot 类的构造函数。例如,我必须让 Robot 的私有(private)变量 State* 知道他的第一个子类是什么(其中 S 的类型为 State*)

Robot::Robot() {
S = StateDLL::StateChild1::get();
}

这是否意味着 Robot 需要知道 StateDLL 的内容?有没有办法以任何其他方式告诉他关于子类的信息,或者如果我让 RobotDLL 引用 StateDLL 是否无关紧要(考虑到 StateDLL 可以改变很多而 RobotDLL 应该更静态)?

最佳答案

您的 Robot 类根本不应该知道 StateDLL,最好它应该获得通过构造函数传入的 State* 的实例。这将使依赖性保持在最低限度,并允许可交换的实现和简单的测试。

为了防止 RobotDLL 从 StateDLL 获得任何依赖关系,一个由工厂函数组成的接口(interface)仅提供 State* 就足以允许 StateDLL 与提供的另一个 DLL 互换相同的工厂函数,或者如果您稍后决定合并两个 dll,则可以在 RobotDLL 中定义相同的函数。

关于C++ DLL 依赖状态模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com