自从把Lua与C++结合起来使用以后,解决了我以前非常头痛的几个问题,其中有两个是特别明显的,第一个,就是C++的各种对象的访问.第二个,就是程序源代码的管理.
这些问题的起因,是我一般是使用VS的MFC编程.在MFC编程中,大家都知道的,就是很多的类对象都是存放在几个不同的框架,或视图类中的,从框架类中访问视图类的对象,或者反过来,在视图类中访问框架类的对象.这种反复的调用,很让人头痛.再加上,MFC的消息机制,让我们程序的某个功能,即可以在框架类中实现,也可以在视图类中实现,更可以,你实现的这个功能的代码就放在某个小角落里面.如果只实现简单的功能,这样做没有问题.如果是一些比较复杂的功能,例如,多实现几个按钮的功能,那么,第一次开发的时候脑子里有映象,这也没有问题.但是,当一段时间过后,你要对这些代码进行修改的时候,会非常的痛苦.因为,与某个功能相关的代码,可能会出现在N个地方.跨类对象访问和多种实现机制的相互制约,当程序复杂到一定程度的时候,对后继的程序功能的修改或升级或Debug,会让程序员的工作量大大的增加.
后来,接触到了Lua,根据Lua与C++的各自的特点,我想到了一种模式.
这种模式的主要特点就是,用Lua实现程序的各种逻辑,用C++为Lua扩展底层的基础函数库.
在这种模式下,C++的开发将会变得简单,因为,C++本身不再处理与程序逻辑相关的任何事情,只是封装一些基本功能的代码库,比如,与XML操作相关的各种基本类和函数,与ADO相关的基本类和函数,通过Lua的loadlib函数,调用封装了这些功能的基本dll库后,在Lua中就可以实现这些功能的各种应用.当C++不再处理程序的各种复杂逻辑之后,我们编写C++的基本应用库就会很简单.
Lua实现各种程序逻辑时,如果按照一定的原则进行,那对Lua的源代码的管理,会比C++简单,例如,我编写了一个对话框程序,这个对话框的各种功能描述函数,只要放在某个特定的Lua脚本文件中就可以了.如