如何设计系统,以便用户可以使用dll生成自己的对象

时间:2009-10-16 13:44:14

标签: c++ design-patterns

我有一个服务器,它接收一些消息x并输出一些消息Y.目前x到y的映射是固定的。所以x1将始终生成带有相应字段的y1。

但现在我希望能够使其可配置,以便用户可以将自己的dll生成x1到y2,y3,或者他们想要的。如果他们不处理它,那么它应采用默认映射,即x1到y1。

还有一件事是我的大部分输出消息y1,y2,y3都是现有的对象,它们都是从基类派生的。 而且我希望能够以相反的方式做同样的事情...意味着根据用户dll将y2(传入消息)转换为x1。 我们可以使用DLL来完成这个吗?或者有更好的方法吗? 是否有正确的设计模式(工厂模式或其他),以便将来也具有灵活性。 感谢!!!

2 个答案:

答案 0 :(得分:0)

COM和预定义的接口应该是您的第一个研究方向。您可以定义接口和某种注册机制。用户创建自己的使用接口的COM对象。然后他注册了他的对象,你的应用程序可以使用它们。

另一种方法可能是在应用程序中使用.NET-dlls和C ++ / CLI。

我不知道dll和C ++的任何其他可移植方式 - 对象(可跨编译器移植)。

答案 1 :(得分:0)

这不是太难,但您需要为DLL编写器提供接口头(.h文件)。您还需要告诉他们使用哪个编译器,或使用COM兼容接口。

快速草图将是提供

的界面
  • queryTypesSupported函数,由DLL提供并由EXE调用以确定支持的类​​型
  • 一个std::auto_ptr<Ybase> processMessage(Xbase&)函数,由DLL实现,用于实际处理。
  • 用于将邮件转换为文本的virtual std::string Ybase::serialize() const功能。