metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-05-19 09:42 pm

Синглетоны

https://github.com/SparkViewEngine/spark/blob/master/src/Samples/DirectUsage/ConsoleTemplating/Services/MessageBuilder.cs

А вот насколько подобный код (статик _instance и его инициализация) является кошерным? Ну с interlocked все более-менее понятно, а вот собственно использование синглетонов вместо всяких модных IoC и тому подобного усложняющего все трэша?

[identity profile] mr-st.livejournal.com 2014-05-19 07:27 pm (UTC)(link)
Интерлокед там нафиг не нужен, кстати.

[identity profile] metaclass.livejournal.com 2014-05-19 07:37 pm (UTC)(link)
Присваивание и проверка для ссылок атомарны?

[identity profile] mr-st.livejournal.com 2014-05-19 07:38 pm (UTC)(link)
Присваивание статику да.

[identity profile] jakobz.livejournal.com 2014-05-19 07:50 pm (UTC)(link)
Кстати от вероятности создать DefaultMessageBuilder два раза, автор кода не защитился.

[identity profile] mr-st.livejournal.com 2014-05-19 07:41 pm (UTC)(link)
Хотя я не совсем прав. Вот такое точно безопасно
class A
{
private static A _instance = new A();
}