При создании объекта вернуть существующий - C#
Формулировка задачи:
Здравствуйте, уважаемые!
Есть куча файлов, из которых по мере надобности создаются объекты:
процедура создания объекта достаточно затратна, поэтому хочется кэшировать этот объект.
Для этого я просто сделал отдельный класс, в котором прописал коллекцию и команду на создание объекта, которая проверяет в коллекции и возвращает имеющийся, если есть, или создаёт новый, если это первое обращение.
Собственно вопрос, могу ли я переместить эту коллекцию в сам этот объект, чтобы он при создании сам себя искал в коллекции и если он там есть, то не создавался, а брался из коллекции.
типа такого:
myObj m = new myObj("c:\\temp\\file1.sql")class myObj{
private static Dictionary<string,myObj> dic=new Dictionary<string,myObj> ()
public myObj(){
myObj rp;
if (dic.ContainsKey(Id))
{
rp = dic[Id];
}
else
{
rp=new myObj(Id);
dic.Add(Id, rp);
}
return rp;
}
}Решение задачи: «При создании объекта вернуть существующий»
textual
Листинг программы
class myObj
{
private static Dictionary<string, myObj> dic = new Dictionary<string, myObj>();
private myObj(string Id)
{
}
public static myObj Create(string Id)
{
myObj rp;
if (dic.TryGetValue(Id, out rp))
return rp;
rp = new myObj(Id);
dic.Add(Id, rp);
return rp;
}
}