Design patterns 什么';检查日志记录是否启用的最干净的方法是什么?

Design patterns 什么';检查日志记录是否启用的最干净的方法是什么?,design-patterns,architecture,software-design,Design Patterns,Architecture,Software Design,我正在实现一个软件,用户可以在开始任务之前决定是否要为此任务创建日志文件 如果启用了日志记录,则会创建csv编写器 代码中有几行代码使用csv编写器写入日志 csv写入程序已被释放 现在有三种方法可以检查日志记录是否已启用,但我不喜欢其中任何一种: 每次创建或访问csv writer时,都要在其前面进行“如果(isLogging)”检查(大量调用) 创建csv编写器接口并调用该接口。创建另一个EmptyCsvWriter,它实现接口并具有空方法,并在isLogging为false时初始化此方

我正在实现一个软件,用户可以在开始任务之前决定是否要为此任务创建日志文件

  • 如果启用了日志记录,则会创建csv编写器
  • 代码中有几行代码使用csv编写器写入日志
  • csv写入程序已被释放
现在有三种方法可以检查日志记录是否已启用,但我不喜欢其中任何一种:

  • 每次创建或访问csv writer时,都要在其前面进行“如果(isLogging)”检查(大量调用)
  • 创建csv编写器接口并调用该接口。创建另一个EmptyCsvWriter,它实现接口并具有空方法,并在isLogging为false时初始化此方法(创建“fake”null对象似乎是错误的)
  • 创建csv编写器并通过isLogging。检查csv writer内部是否在每次方法调用时都启用了isLogging(为什么要首先创建csv writer对象?似乎也是错误的)

  • 第二种选择是最优雅的。它使所有代码更简单,更易于测试


    但是如果您需要计算csv编写器所获取的输入,那么它的效率不如第一个:如果编写器丢弃输出,您将免费生成输出。另一方面,它的好处是,即使使用noop编写器,您也可以在生成输入的代码中检测到bug。

    第二个选项是最优雅的。它使所有代码更简单,更易于测试


    但是如果您需要计算csv编写器所获取的输入,那么它的效率不如第一个:如果编写器丢弃输出,您将免费生成输出。另一方面,另一个好处是,即使使用noop编写器,您也可以在生成输入的代码中检测到bug。

    第二个选项是最优雅的。它使所有代码更简单,更容易测试。但是如果您需要计算csv编写器所获取的输入,那么它的效率不如第一个:如果编写器丢弃输出,您将免费生成输出。另一方面,它的好处是,即使使用noop编写器,您也可以在这个生成输入的代码中检测到bug。谢谢。你想把它作为答案贴出来,这样我就可以勾选它了吗?第二个选项是最优雅的。它使所有代码更简单,更容易测试。但是如果您需要计算csv编写器所获取的输入,那么它的效率不如第一个:如果编写器丢弃输出,您将免费生成输出。另一方面,它的好处是,即使使用noop编写器,您也可以在这个生成输入的代码中检测到bug。谢谢。你想把它作为答案贴出来,这样我就可以勾选它了吗?