重载Singleton类的实例函数

时间:2012-01-03 11:48:17

标签: design-patterns singleton

这是重载实例函数以接受参数的最佳方法,在下面的代码片段中,我传递了日志文件的文件名。这样做好吗?

  

Logger.GetIntance( “Temp.log”);

     

Logger.GetIntance()。WRITELOG(“程序   开始“);

有没有更好的方法来实现同一目标?

2 个答案:

答案 0 :(得分:1)

getInstance()不是实例方法。它是一种静态方法。如果Logger是单身,那么您无法在逻辑上使用两种不同的方法来获取相同的实例。

如果需要初始化单例,那么在类本身中执行此操作。它无论如何都会在一个地方初始化,所以最好在里面。

但是记录器很少是单例,Logger.getInstance(..)通常会返回一个新实例。所以可以超载它。

答案 1 :(得分:0)

如果你想遵循设计模式,那么我建议你在课堂内用文件名初始化记录器。如果在此期间不知道文件名(它发生了变化),那么你是否需要一个单例是值得怀疑的。