Я пишу обертку вокруг библиотеки классов, которую я не могу контролировать.В этой библиотеке есть класс (назовем его Target
), который я хочу убедиться, что он создается только один раз, но сам по себе он не является одиночным.Я подумал об использовании шаблона 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
является поточно-ориентированным и обеспечивает глобальный доступв один экземпляр целевого класса.Что-то не так с этим, о чем я не подумала?