在开发后台服务的过程中,我们常常需要从数据库中取数据,并将数据缓存在本地中,另外,我们的服务还需要有更新数据的能力:包括定时的主动更新以及数据库数据更新时服务收到通知的被动更新。
之前在需要用到以上功能的时候,模仿着组内通用的数据Cache部分的代码来写,十分方便,基本上只需要自己写两个类:一个是取数据并缓存数据的类XXXData,一个是扇出数据的类XXXFetcher。
在需要使用数据的时候,通过:
FetcherFactory::getFetcher<XXXFetcher>()
即可获取一个XXXFetcher对象的指针。
查看FetcherFactory.h的备注:
/**
* 配置中心, 存储各种配置, 会自动搜索项目中的Fetcher实现类, 加载, 并
* 在收到刷新配置的通知时调用update方法
* 需要在服务器启动的onInitialize中调用本类的Initialize方法进行初始化
*/
重点:会自动搜索项目中的Fetcher实现类并加载。
也就是说,FetcherFactory可以自动地查找项目中的Fetcher实现类,然后动态地创建XXXFethcer对象。
什么叫动态创建呢?
就是能够根据一个类的名字动态地创建该类的对象。
举个例子,你的程序需要用到一个文本文件,而此文件中存放着一些类的名字,你能根据这些名字动态的生成这些类吗?
/*****************************************************************************/
/*从文件中读出类的名字存放在字符串变量szClassName中,现在假设读出的字符串为 */
/* ”CString”,而类CString派生自CObject,那么我们可以用基类指针指向派生类 */
/***********************************/********************