0

我有一个基本的面向对象架构问题。假设我在 VB.NET 中有一个名为 OutputLog 的类。它具有“创建”、“写入”和“读取”方法。

在我的程序中,我有许多要写入一个日志文件的类。所以,如果我有一个适合我的启动类程序,它有:

Public Class Main

  logFile = new OutputLog()
  logFile.create("c:\abc.log")
  logFile.write("first entry to the log file")

End Class


Public Class Two

  "I want to write to this same log file in this class"

End Class

Public Class OutputLog

    Methods to "Create", "Write" and "Read"

End Class

构建这个的最佳方法是什么?我可以在第二类的构造函数中传递对 logFile 的引用吗?这是处理这个问题的最好方法吗?这意味着对于我要写入日志文件的每个类,我都需要在构造函数中传递 logFile?

谢谢

4

3 回答 3

0

如果要在单独的类中写入同一文件,则应将模块中的 logfile var 声明为 public

假设您在项目中创建Module1.vb .. 添加这个

Public logFile as New OutputLog

在你的主要课程中

Public Class Main

  logFile.create("c:\abc.log")
  logFile.write("first entry to the log file")

End Class


Public Class Two

  logFile.write("this is from class two")

End Class
于 2013-06-06T17:50:28.577 回答
0

我可以提出两种方法来制作更好的架构:

a) 使 OutputLog 的所有成员静态,例如 Create、Write 和 Read。因此,您可以在任何地方调用这些成员。

b) 阅读一些关于 Singleton 的内容。将 OutputLog 视为单例。那也可以解决问题。

这是我将 logFile 传递给每个构造函数的最后一件事。

于 2013-06-06T15:09:56.847 回答
0

你的选择真的是:

您可以传递该类的副本,但这有点毫无意义,只是意味着当您添加更多类时需要添加越来越多的代码

于 2013-06-06T15:10:14.533 回答