【Jiya&Chieng】(壹)Chieng_v1.0
来源:互联网 发布:java交换两个数 编辑:程序博客网 时间:2024/05/16 14:01
Chieng_v1.0
前文说到,我将开发一个目前啥都没有的项目,叫做Jiya。Chieng_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.h 和tinyxml2.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
- 【Jiya&Chieng】(壹)Chieng_v1.0
- 【Jiya&Chieng】(零)Jiya和Chieng的故事
- 【Jiya&Chieng】(贰)CoreDump —— 崩溃前的自拍
- 春晓(壹)
- 叁:列(壹)
- (六)一波未平,一波又起 @ 壹
- 项目总结 转载 (壹)
- DarkGDK库学习笔记(壹)
- Linux PCI 设备驱动(壹)
- 正态分布的前世今生(壹)
- C++ Primer 初学心得(壹)
- 正襟危坐说--操作系统(壹):操作系统概述及历史
- 免杀(必备汇编基础_壹)
- 菜鸟JAVA之旅——(壹)
- C#学习笔记壹---字符串处理技术(1)
- "壹"始
- ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门
- 简易手动部署多节点的Openstack(L版)——壹(前期准备)
- Dubbo架构设计详解
- 利用CSS画梯形
- 第一章 正则表达式字符匹配攻略
- 我所认识的那些技术
- 神经网络与深度学习笔记——第6章 深度学习
- 【Jiya&Chieng】(壹)Chieng_v1.0
- 欢迎使用CSDN-markdown编辑器
- 构建工具maven
- jQuery_easyUI窗口
- Linux 中使用env查看当前环境
- 基于udp的网络群聊系统
- 用c语言编写三子棋小游戏
- CloudStack相关技术-主存储和二级存储
- NYOJ 36. 最长公共子序列(基础DP)