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

原文地址:https://www.cnblogs.com/water-bear/p/12177606.html