这是重载实例函数以接受参数的最佳方法,在下面的代码片段中,我传递了日志文件的文件名。这样做好吗?
Logger.GetIntance( “Temp.log”);
Logger.GetIntance()。WRITELOG(“程序 开始“);
有没有更好的方法来实现同一目标?
答案 0 :(得分:1)
getInstance()
不是实例方法。它是一种静态方法。如果Logger
是单身,那么您无法在逻辑上使用两种不同的方法来获取相同的实例。
如果需要初始化单例,那么在类本身中执行此操作。它无论如何都会在一个地方初始化,所以最好在里面。
但是记录器很少是单例,Logger.getInstance(..)
通常会返回一个新实例。所以可以超载它。
答案 1 :(得分:0)
如果你想遵循设计模式,那么我建议你在课堂内用文件名初始化记录器。如果在此期间不知道文件名(它发生了变化),那么你是否需要一个单例是值得怀疑的。