У меня был вопрос на собеседовании: с учетом многопоточной системы, как должен быть спроектирован объект регистрации?
Я сказал, что он должен быть статическим, использовать шаблон синглтона и использовать механизм блокировки:
public class Logger{
private Logger(){
Console.WriteLine("Logger created");
}
static Logger instance;
static Object key = new Object();
public static Logger getInstance(){
lock (key){
if (instance == null){
instance = new Logger();
}
}
return instance;
}
}
Теперь меня интересует инициализация ключевого объекта - он должен быть потокобезопасным и должен быть инициализирован один раз (те же функции, что и для моего регистратора) - поэтому я разработал следующее решение:
public class Logger{
private Logger(){
Console.WriteLine("Logger created");
}
static Logger instance = new Logger();
public static Logger getInstance(){
return instance;
}
}
Являются ли эти решения в основном одинаковыми?