C ++ DLL依赖状态模式

时间:2015-03-25 14:27:36

标签: c++ dll dependencies external-dependencies

对于我的作业,我制作了一个类机器人,它有一个指向类状态的指针。此State类是一个接口。 State子类的实际实现需要在单独的DLL中完成。

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

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

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

这是否意味着Robot需要了解StateDLL内容?有没有办法以任何其他方式告诉他有关子类的信息,或者我是否让RobotDLL引用StateDLL并不重要(在RobotDLL应该更静态的情况下,StateDLL可以改变很多想法)?

1 个答案:

答案 0 :(得分:0)

你的Robot类根本不应该知道StateDLL,最好是通过构造函数传递一个State*的实例。这将使依赖关系保持在最低限度,并允许可交换的实现,并且易于测试。

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

相关问题