如何设计一个支持插件的程序?

bobya2003 2007-03-21 09:55:56
如何设计一个支持插件的程序,最好能考虑到跨平台,希望大侠们给点参考意见。。。。
...全文
730 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobya2003 2007-03-24
  • 打赏
  • 举报
回复
谢谢各位 下星期结帖
boxban 2007-03-22
  • 打赏
  • 举报
回复
以我看来,所谓插件可以简单理解为实现了约定接口规范的软件模块,该软件模块是可以被宿主程序动态加载的。宿主程序预先定义了一系列接口规范以及相应的语义规则等,插件则按照约定实现这些接口,并编译成可动态加载的模块。

正如前面各位DX所言,由于C++缺少ABI(Application Binary Interface),所以实现插件的二进制跨平台是不可能的。然而我们完全可以在源代码一级实现跨平台支持,尽管这也存在一定困难,但技术上是可行的。

至于如何设计接口,这完全是与具体应用相关的东西。接口设计的质量很大程度上取决于设计者。设计者对当前及未来需求的理解及把握、在系统设计方面的功力,对语言特性的了解,对不同平台之间差异的理解等都将对最终的设计产生影响。
orc1984 2007-03-22
  • 打赏
  • 举报
回复
glib
lidongri 2007-03-22
  • 打赏
  • 举报
回复
还有,根据插件的应用范围不同
使用的方法也不同

功能插件?
数据插件?
其他?
bobya2003 2007-03-22
  • 打赏
  • 举报
回复
to :lidongri(海浪 源码之前了无秘密)

看了 http://www.window07.com/other/2006-3-3/k72893.htm

对decorator模式有了了解,感觉不太好应用到插件中来,不知道各位有什么其他建议么。。。。
lidongri 2007-03-22
  • 打赏
  • 举报
回复
bobya2003() ( ) 信誉:100 Blog 2007-03-22 09:37:24 得分: 0
如果接口现在不太好确定,有什么办法可以避免吗? 能不能扩展呢?
--------------
很难

给一个类添加新职责,参见设计模式中decorator模式
bobya2003 2007-03-22
  • 打赏
  • 举报
回复
项目需求还不是很明确,走的是原型,为了以后方便,我现在会尽量考虑的多一点。。。。。
lsaturn 2007-03-22
  • 打赏
  • 举报
回复
貌似程序开发时就该决定是否跨平台了
bobya2003 2007-03-22
  • 打赏
  • 举报
回复
如果接口现在不太好确定,有什么办法可以避免吗? 能不能扩展呢?
lsaturn 2007-03-22
  • 打赏
  • 举报
回复
跨平台跟你们系统有关,跟做插件无关,插件就是操作或者增强主程序的一些功能,约定一个规则保证插件和主程序的交互就可以了,要看你的需求是什么
itdreamer 2007-03-22
  • 打赏
  • 举报
回复
oo
roger_77 2007-03-21
  • 打赏
  • 举报
回复
Wxwidgets+DLL
bobya2003 2007-03-21
  • 打赏
  • 举报
回复
离开一会,下午再来请教...TKS
bobya2003 2007-03-21
  • 打赏
  • 举报
回复
有谁知道bo2k是采用甚么方法支持插件的吗?
taodm 2007-03-21
  • 打赏
  • 举报
回复
理论上方法相同,但代码细节差了很远
bobya2003 2007-03-21
  • 打赏
  • 举报
回复
其他平台下面也能用这种方法吗?
taodm 2007-03-21
  • 打赏
  • 举报
回复
“那一般需要怎么定义接口呢?”
这个只有你自己知道。你要插件实现什么功能,就定什么接口。
bobya2003 2007-03-21
  • 打赏
  • 举报
回复
是指显示调用dll来实现插件吗?那一般需要怎么定义接口呢?
taodm 2007-03-21
  • 打赏
  • 举报
回复
不用corba那就com;com都不允许那也得dll。
不然,你就内建lua/python编译器加载脚本。
这个,无法建议的,必须根据实际想支持什么类型的插件自己想的。
bobya2003 2007-03-21
  • 打赏
  • 举报
回复
如果暂时不考虑跨平台,用C++应该怎么设计这种插件架构呢? 项目不允许用corba。。。。。
加载更多回复(11)

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧