额外收获
AppenderFactory 返回的指针是 SharedAppenderPtr
class NullAppenderFactory : public AppenderFactory {
public :
SharedAppenderPtr createObject ( const Properties & props )
{
return SharedAppenderPtr ( new log4cplus :: NullAppender ( props ));
}
tstring getTypeName () {
return LOG4CPLUS_TEXT ( "log4cplus::NullAppender" );
}
};
LayoutFactory 中返回的是 std::auto_ptr 指针
class TTCCLayoutFactory : public LayoutFactory {
public :
std :: auto_ptr < Layout > createObject ( const Properties & props )
{
std :: auto_ptr < Layout > tmp ( new log4cplus :: TTCCLayout ( props ));
return tmp ;
}
tstring getTypeName () {
return LOG4CPLUS_TEXT ( "log4cplus::TTCCLayout" );
}
};
这两者之间有什么样的区别联系 ?
通过 auto_ptr 可以知道对象实例在返回之后 , 需要将对象的生命周期交给外部的使用者 , 由使用者负责堆对象实例的析构工作 .
分析成果
配置文件的定义实现 , 包含的基本类 , 以及这些类的实现 .
对于实现的动态配置的考虑 :
1. 通过生成 RegistryFactory 完成所有需要加载的对象的工厂方法的初始化 ,
2. 分析配置文件来实现不同方法的调用的实现
3. 加载完成 Configure 文件之后 , 既实现的基本的数据的获取和采集功能 .