2012-01-03 70 views
0

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

Logger.GetIntance(“Temp.log”);

Logger.GetIntance()。WriteLog(“Program Start”);

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

+0

我不说这是个好主意。我从来没有见过这种方法。如果你有一个“SetFileName”函数或什么的,会不会更好? – 2012-01-03 11:53:07

回答

1

getInstance()不是实例方法。这是一种静态方法。如果Logger是单身人士,那么您无法在逻辑上有两种不同的方法来获得同一个实例。

如果您需要初始化单身人士,那么请在课程中自己做。无论如何,它只会在一个地方初始化,所以最好在里面。

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

+0

你能告诉我为什么我不能有两种不同的方法来获得相同的实例吗? – logeeks 2012-01-03 12:24:14

0

如果你想遵循设计模式,那么我建议你在类中用文件名初始化记录器。如果在这段时间内文件名是不知道的(它会改变),那么你是否需要拥有一个singleton是有问题的。