读取配置文件动态创建对象[C++](4)

 

全局函数

 

在全局函数中完成 LoggerAppender 的初始化工作

initializeFactoryRegistry ();

 

void   initializeFactoryRegistry () {

        AppenderFactoryRegistry & reg = getAppenderFactoryRegistry ();

        auto_ptr < AppenderFactory > ptr1 ( new   ConsoleAppenderFactory ());

        reg . put ( ptr1 );

        auto_ptr < AppenderFactory > ptr2 ( new   NullAppenderFactory ());

        reg . put ( ptr2 );

        auto_ptr < AppenderFactory > ptr3 ( new   FileAppenderFactory ());

        reg . put ( ptr3 );

        auto_ptr < AppenderFactory > ptr4 ( new   RollingFileAppenderFactory ());

        reg . put ( ptr4 );

        auto_ptr < AppenderFactory > ptr5 ( new   DailyRollingFileAppenderFactory ());

        reg . put ( ptr5 );

        auto_ptr < AppenderFactory > ptr6 ( new   SocketAppenderFactory ());

        reg . put ( ptr6 );

#if defined( _WIN32 )

        auto_ptr < AppenderFactory > ptr7 ( new   NTEventLogAppenderFactory ());

        reg . put ( ptr7 );

#elif defined( HAVE_SYSLOG_H )

        auto_ptr < AppenderFactory > ptr8 ( new   SysLogAppenderFactory ());

        reg . put ( ptr8 );

#endif

        LayoutFactoryRegistry & reg2 = getLayoutFactoryRegistry ();

        auto_ptr < LayoutFactory > ptr21 ( new   SimpleLayoutFactory ());

        reg2 . put ( ptr21 );

        auto_ptr < LayoutFactory > ptr22 ( new   TTCCLayoutFactory ());

        reg2 . put ( ptr22 );

        auto_ptr < LayoutFactory > ptr23 ( new   PatternLayoutFactory ());

        reg2 . put ( ptr23 );

 

        FilterFactoryRegistry & reg3 = getFilterFactoryRegistry ();

        auto_ptr < FilterFactory > ptr31 ( new   DenyAllFilterFactory ());

        reg3 . put ( ptr31 );

        auto_ptr < FilterFactory > ptr32 ( new   LogLevelMatchFilterFactory ());

        reg3 . put ( ptr32 );

        auto_ptr < FilterFactory > ptr33 ( new   LogLevelRangeFilterFactory ());

        reg3 . put ( ptr33 );

        auto_ptr < FilterFactory > ptr34 ( new   StringMatchFilterFactory ());

        reg3 . put ( ptr34 );

}

 

通过这种方式来实现  

              AppenderFactoryRegistry

                   LayoutFactoryRegistry

                   FilterFactoryRegistry

                   的初始化工作 如果要加入新的类型的数据的支持 , 需要将这部分的内容也要实现

       

          如何利用 Registry 中的内容来实现对象数据的创建 ?

注意

得到的指针内容都是 Factory 中定义的内容 ,

通过调用 Factory 方法来获取具体的能够使用的对象的实例

        


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值