Представьте себе, что в файле Global.asax.cs у меня есть экземпляр класса в качестве частного поля. Скажем так:
private MyClass _myClass = new MyClass();
И у меня был статический метод в Global, называемый GetMyClass (), который получает текущее HttpApplication и возвращает этот экземпляр.
public static MyClass GetMyClass()
{
return ((Global)HttpContext.Current.ApplicationInstance)._myClass;
}
Таким образом, я могу получить экземпляр текущего запроса httpapplication, вызвав Global.GetMyClass ().
Имейте в виду, что существует более одного (глобального) HttpApplication. Для каждого запроса есть HttpApplication, и они объединяются / разделяются, поэтому в прямом смысле это не настоящий singleton . Но оно в определенной степени следует шаблону.
Итак, как задан вопрос, рассмотрите ли вы это, по крайней мере, модель синглтона?
Вы сказали бы, что его не следует использовать? Вы не хотели бы использовать его? Вы бы сказали, что это возможно плохая практика как настоящий синглтон.
Не могли бы вы увидеть какие-либо проблемы, которые могут возникнуть из-за такого сценария использования?
Или вы бы сказали, что это не настоящий синглтон, так что все в порядке и неплохая практика. Вы бы порекомендовали это как полу-квази-синглтон, где требуется экземпляр для запроса? Если нет, какой другой шаблон / предложение вы бы использовали / даете?
Вы когда-нибудь использовали что-нибудь подобное?
Я использовал это в прошлых проектах, но я не уверен, стоит ли избегать этой практики. У меня никогда не было проблем в прошлом.
Пожалуйста, дайте мне ваши мысли и мнения по этому поводу.
Я не спрашиваю, что такое синглтон. И я считаю синглтон плохой практикой при неправильном использовании, что во многих-многих случаях. Это я. Однако это не то, что я пытаюсь обсудить. Я пытаюсь обсудить ЭТОТ сценарий, который я дал.