制御できないクラスライブラリのラッパーを作成しています。Target
このライブラリには、 1回だけインスタンス化されることを確認したいクラス(これを呼びましょう)がありますが、それ自体はシングルトンではありません。私は次のようにSingleton-Factoryパターンを使用することを考えました:
internal sealed class SingletonFactory
{
private static readonly SingletonFactory manager = new SingletonFactory();
private readonly Target target;
private static SingletonFactory() { }
private SingletonFactory()
{
target = new Target();
target.Init("foo");
}
internal static SingletonFactory Instance
{
get { return manager; }
}
internal Target Target
{
get { return target; }
}
}
その後、次のことができます。
var targetInstance = SingletonFactory.Instance.Target;
次に、ファクトリを次のように完全に静的にすることで、これを単純化することを考えました。
internal static class StaticFactory
{
private static readonly Target target;
private static StaticFactory()
{
target = new Target();
target.Init("foo");
}
internal static Target Target
{
get { return target; }
}
}
ターゲットインスタンスへのアクセスは次のようになります。
var targetInstance StaticFactory.Target;
StaticFactory
これはスレッドセーフであり、ターゲットクラスの単一インスタンスへのグローバルアクセスを提供すると確信しています。私が考えていなかったこれに何か問題がありますか?