У меня есть точка в моем дизайне, где я серьезно рассматриваю синглтон.Возможно ли использование Singleton?
Как мы все знаем, «общим» аргументом является «Никогда не делай этого! Это ужасно!», Как будто мы засорили наш код кучей goto
заявлений.
ServiceStack прекрасная инфраструктура. Я и моя команда продаются на нем, и у нас есть сложная инфраструктура, основанная на веб-сервисах. Я ободряю асинхронный дизайн и, где это возможно, используя SendAsync
на клиентах службы-стека.
Учитывая, что у нас есть все эти разные системы, которые делают разные вещи, мне пришло в голову, что я хотел бы иметь общий регистратор (сам веб-сервис на самом деле, с возвратом к локальному текстовому файлу, если веб-сайт сервис недоступен - например, некоторые демоны преследуют здание). Хотя я большой поклонник Injection Dependency Injection, мне кажется не чистым (по крайней мере, мне) передавать ссылку на «использование этого клиента-регистратора» на каждый асинхронный запрос.
Учитывая, что сигнатура сбоя ServiceStack - это Func<TRESPONSE, Exception>
(и у меня нет с этим никаких проблем), я даже не уверен, что если метод включения, который сделал вызов в первую очередь, имел бы действительный дескриптор.
Однако, если бы мы имели одноплодную регистратор в данный момент, это не имеет значения, где мы находимся в мире, какой поток мы на, и какая часть множества анонимных функций мы находимся в.
Является ли это признанным действительным случаем, или это не аргумент - с одиночными точками?
«Как мы все знаем,« общим »аргументом является« Никогда не делайте этого! Это ужасно! »« Обычное где? – Filip
Я почти никогда не использую статические классы, и я избегаю синглтона, но я не считаю их такими же ужасными, и я не хочу, чтобы мой код зависел от них. – eandersson
@Filip, вам не придется много искать в Google или StackOverflow, чтобы найти «гнев бригады Anti-Singleton». Хотя есть и те, кто считает, что он всегда будет иметь свое место в некоторых нишевых сценариях, есть и те, кто откажется от голосования, если он использует синглтон как пример *. Поэтому я решил, что лучше всего задать вопрос в интересах лучшей практики. И вот для чего этот сайт для :) –