【Jiya&Chieng】(壹)Chieng_v1.0

来源:互联网 发布:java交换两个数 编辑:程序博客网 时间:2024/05/16 14:01

Chieng_v1.0

前文说到,我将开发一个目前啥都没有的项目,叫做JiyaChieng_v1.0 正是它的核心 Chieng 的1.0版本。

一般来说,插件框架中,插件和核心之间需要先约定一个API。这样核心才能方便的召唤插件。但是,由于目前需求不明,无法确定比较好的接口。这种情况下,这个1.0版本只需要一个接口,那就是run。事实上,等到有更好想法的时候,可以通过一个插件来新起一个核心,然后关掉旧的核心。那个插件的名字,可以叫做Reborn

一、Chieng_v1.0 的组成

说回Chieng_v1.0。它包含以下几样东西:

1. 插件列表文件:
它用于登记Jiya 所包含的所有插件。这里,我选择使用XML 文件作为列表文件,且暂定文件名为plugin_map.xml。这意味着Chieng_v1.0 需要对XML 进行处理。我选择使用现有的开源软件TinyXML2,因为它确实对得起Tiny 这个名字。在我将提供的代码中,tinyxml2.htinyxml2.cpp 就是它的全部代码。

2. 插件列表:
这一部分就是插件们在内存中的数据结构,用于保存它们的名字、路径、句柄。这些可以使用哈希表进行处理。这里,本人选择使用unordered_map

3. LoadAll ():
如名,它加载所有插件。不过这里需要一点说明:它只是从plugin_map.xml 中加载插件的名字和路径,而不是对插件本身进行加载。这么做的原因,是因为考虑到插件数量很多的时候,很多插件是没必要马上加载的。

4. AddPlugin ():
它将插件添加到插件列表中,包括名字和路径。

5. Remove ():
它将插件从插件列表移除。

6. Run ():
如果插件句柄已经加载,或者现在加载成功了,就让插件跑起来。

二、附加说明

这是一个很简单的项目,至少目前是这样。但是我确实不小心陷入到了一个叫做“优化地狱”的地方。

我会想:我怎么会这么写,应该那样才更好;我也会想:它应该再加上这个功能,不然根本没用。于是,一个简单的东西,却付出了不相匹配的时间,结果还没有实质性的提升。这个问题很严重,因为我的业余时间实在是太稀缺了。

于是我咬咬牙,只把新思路保存在了笔记本上。所以,我的代码实在还有很多优化和提升的空间。因此,任何人都可以给出意见,谢谢。

下面是给了我启发的文章,以及包含了Chieng_v1.0的Jiya:
【1】4个费劲心思却走向编程地狱的陷阱:https://news.cnblogs.com/n/542687/
【2】Jiya_v1.0.0:http://download.csdn.net/detail/woshichenjiacheng/9922777