泛型程序设计(generic programming) 是建立在c++的template机制基础上的一种完全不同于面向对象的程序设计思维模式,stl是泛型概念的一套实作产品。loki是一个与boost齐名的开放源码的c++程序库,它通过一些精巧的装置为常规c++开发提供了一些很有用的工具。 stl非常好用,弹性非常大,效率也很理想。目前几种主流的c++编译器均有相关的stl实现,而个人认为目前非常流行的visual c++ 6.0平台中开发文档应用程序时,其文档序列化的功能非常好用,但由于其序列化能力建立在mfc之上,并不被stl支持,所以,如何既拥有stl的效率及通用性,又保留mfc的序列化能力,便成了visual c++ 6.0平台上运用stl技术开发文档应用程序时不得不面对的一个问题,在这里我就以非常流行的visual c++ 6.0+sp5平台结合一个假定的例子来介绍一下如何在visual c++6.0中结合使用stl、loki及模板技术来开发一个文档应用的开发历程,希望能对大家有所启发。
示例
先来简单介绍一下我所用到的例子:一个简单的商务进销存基本应用(不必关注细节),它应该包含:职员(employee)、产品(product)、仓库(storage)、往来单位(supply)、帐户(account)、单据(bill)等等,由于每种信息均应有唯一标识,所以我在这里选用stl中的map来表示如下(为了说明简单起见,我们只列两种):
| std::map<size,employee*> itsemployees; //职员表 std::map<size,product*> itsproducts; //产品表 .. |
| size addaccountmember(account* e); //添加帐户 { //获取下一个可用的id号 size id=getnextaccountid(); itsaccounts[id]=e; return id; } size addemployeemember(employee* e);//添加职员 { //获取下一个可用的id号 size id=getnextemployeeid(); itsemployees[id]=e; return id; } .. |
| void delaccount(size id); //删除指定帐户 { itsaccounts.erase(id); } void delemployee(size id); //删除指定职员 { itsemployees.erase(id); } .. |
| account* getaccountmember(size id) //获取指定帐户 { return itsaccounts[id]; } employee* getemployeemember(size id) //获取指定职员 { return itsemployees[id]; } .. |
| //获取下一个可用职员号 size getnextemployeeid() { if (itsemployees.empty()) return 1; std::map<size,employee*>::iterator it=itsemployees.end(); --it; return it->first+1; } //获取下一个可用帐户号 size getnextaccountid() { if (itsaccounts.empty()) return 1; std::map<size,account*>::iterator it=itsaccounts.end(); --it; return it->first+1; } .. |
| addaccountmember, addemployeemember,.. delaccount, delemployee,.. getaccountmember, getemployeemember,.. getnextaccountid, getnextemployeeid,.. |
| addmember delmember getmember getnextmemberid |
那么,我们的接口名称数量就只与实现的功能多少成常数关系,而与我们要操作的表的个数无关了,整个程序就应该清晰多了。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器