spdlog 类图

 

代码中有趣的小设计:

1.synchronous_factory 和 async_factory_impl 用了C++11 的可变参数函数模版,解决了传统工厂方法模式两个缺点:

a.加个新类型的对象,对应要加个工厂子类

b.工厂创建的子类们的参数要一样

2.base_sink 类的log和flush 方法用了final后明确了sink系列的flush和log方法用的是NVI(non-virtual-interface)手法。

在《effective C++》中建议该手法用在明确"事前工作"和"事后工作",这块加锁解锁就是"事前工作"

 

参考:https://blog.csdn.net/csenjoy/article/details/96337751

posted @ 2020-01-10 18:32  water_bear  阅读(302)  评论(0编辑  收藏  举报