私はこのクラスをシングルトンとして実装しています。私はスレッドの安全性が良くありません。 GenerateOrderIDクラスがスレッドセーフであることを確認したいより具体的には、orderCount変数を異なるオブジェクトで同時にインクリメントしてカウントをオフにすることはできません。このクラスはスレッドセーフですか?
public class OrderIDGenerator
{
private static readonly OrderIDGenerator instance = new OrderIDGenerator();
private int orderCount;
private OrderIDGenerator()
{
orderCount = 1;
}
public static OrderIDGenerator Instance
{
get { return instance; }
}
public string GenerateOrderID()
{
return String.Format("{0:yyyyMMddHHmmss}{1}", DateTime.Now, orderCount++);
}
}
あなたの精巧な答えをありがとう。特に好奇心が強いのですが、特にシングルトンを使用しないでください。 – bkarj
@Behrooz:なぜならシングルトンは効果的に柔軟性を制限しているからです。 2つのデータベースの注文番号を処理するようにサービス/アプリケーションを拡張したふりをする。シングルトンはこれを不可能にするでしょう。代わりに、依存関係インジェクションや、渡されたいくつかの "コンテキスト"オブジェクトを使用して、 'OrderIDGenerator'インスタンスを参照する必要があります。 – cdhowie