2012-01-03 5 views
0

インスタンス関数をオーバーロードしてパラメータを受け入れる最善の方法ですか?次のコードスニペットでは、ログファイルのファイル名を渡しています。このようにするのがいいですか?シングルトンクラスのインスタンス関数のオーバーロード

Logger.GetIntance( "Temp.log");

Logger.GetIntance()。WriteLog( "Program Start");

同じ目標を達成するより良い方法はありますか?

+0

いいアイデアではありません。私は以前このアプローチを見たことがない。あなたが "SetFileName"関数などを持っていた方が良いのではないでしょうか? –

答えて

1

getInstance()はインスタンスメソッドではありません。それは静的な方法です。 Loggerがシングルトンの場合、論理的に同じインスタンスを取得するための2つの異なるメソッドを持つことはできません。

シングルトンを初期化する必要がある場合は、クラス自体でシングルトンを行います。とにかくちょうど1つの場所で初期化されるので、内部にある方がよいでしょう。

しかし、ロガーはほとんどシングルトンではなく、Logger.getInstance(..)は通常新しいインスタンスを返します。だから、それをオーバーロードするのは大丈夫です。

+0

同じインスタンスを取得するのに2つの異なる方法を使用できない理由を教えてください。 – logeeks

0

デザインパターンに従う場合は、クラス内でファイル名を使用してロガーを初期化することをお勧めします。その時間にファイル名がわからない場合(変更された場合)、シングルトンを持つ必要があるかどうかは疑問です。

関連する問題