C++ DLL 依赖项 State-pattern

C++ DLL dependancies State-pattern

为了我的作业,我制作了一个 class 机器人,它有一个指向 class 状态的指针。这个状态class是一个接口。 State child classes 的实际实现需要在单独的 DLL 中完成。

我已经能够在单独的 DLL 中成功地制作这些 classes,因此只有带有 State 的 child classes (StateDLL) 的 DLL引用包含 State 接口的 DLL class.

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

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

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

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

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