C++中,没有一种事实上的标准记录工具。以我的经验,商店卷他们自己。这将创建一个有点问题,然而,当试图建立可重复使用的软件组件。如果一切都在你的系统取决于日志的成分,这使得软件不可重复使用,基本上是迫使下游的任何项目采取日志框架以及与组成,他们真正想要的。

IOC(依赖注射)不会真正有帮助的问题,因为你的组成部分将需要依靠记录的抽象概念。记录组件本身可能增加的依赖性文件I/O,触发机制,和其他可能不需要依赖关系。

不增加一种依赖于你的专有记录的框架牺牲的可重复使用的组件?

有帮助吗?

解决方案

是的。但依赖注射,将有助于在这种情况。

你可以创建一个抽象的记录基类和创造实现记录框架。你的部件只是依赖于抽象的基类。和你注入实现与al他们的依赖性需要。

其他提示

是的,Mendelt是正确的。我们做的正是这一点在我们的产品。一切都取决于ILogger的抽象的界面,但它并不取决于其他任何东西。通常一个可执行或者一个高级别DLL将是一个构建一个实际的实施记录仪接口,并注。

如果你是在寻求建立图书馆,它不会重新编译,但是希望提供一个记录的接口后,也许是一个很好的方式是允许用户(图书馆)提供一个回调。

在初始化记录与库,他们将需要指定的回,然后胶码给他们,以使其发挥好与任何他们所拥有的。

如果你可以让签名的回看起来像一个标准功能,他们可能总是提供给他们,为他们提供一个简单的默认选择,如果他们不实际上有记录。

此外,该呼叫者可能具有素组分,从图书馆多次,并对资源的竞争或穿的问题,希望提供一个不同的记录器回用于每一个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top