インスタンス関数をオーバーロードしてパラメータを受け入れる最善の方法ですか?次のコードスニペットでは、ログファイルのファイル名を渡しています。このようにするのがいいですか?シングルトンクラスのインスタンス関数のオーバーロード
Logger.GetIntance( "Temp.log");
Logger.GetIntance()。WriteLog( "Program Start");
同じ目標を達成するより良い方法はありますか?
インスタンス関数をオーバーロードしてパラメータを受け入れる最善の方法ですか?次のコードスニペットでは、ログファイルのファイル名を渡しています。このようにするのがいいですか?シングルトンクラスのインスタンス関数のオーバーロード
Logger.GetIntance( "Temp.log");
Logger.GetIntance()。WriteLog( "Program Start");
同じ目標を達成するより良い方法はありますか?
getInstance()
はインスタンスメソッドではありません。それは静的な方法です。 Logger
がシングルトンの場合、論理的に同じインスタンスを取得するための2つの異なるメソッドを持つことはできません。
シングルトンを初期化する必要がある場合は、クラス自体でシングルトンを行います。とにかくちょうど1つの場所で初期化されるので、内部にある方がよいでしょう。
しかし、ロガーはほとんどシングルトンではなく、Logger.getInstance(..)
は通常新しいインスタンスを返します。だから、それをオーバーロードするのは大丈夫です。
同じインスタンスを取得するのに2つの異なる方法を使用できない理由を教えてください。 – logeeks
デザインパターンに従う場合は、クラス内でファイル名を使用してロガーを初期化することをお勧めします。その時間にファイル名がわからない場合(変更された場合)、シングルトンを持つ必要があるかどうかは疑問です。
いいアイデアではありません。私は以前このアプローチを見たことがない。あなたが "SetFileName"関数などを持っていた方が良いのではないでしょうか? –