Каков наилучший способ инициализации статических полей с помощью статического метода init и после этого убедитесь, что метод никогда не вызывается снова? (не более одного раза в течение срока действия программы)Статический шаблон инициализации
Это пример того, что я сейчас думал о том, что мне кажется очень простым, но я не мог найти примеров подобных шаблонов, которые касаются этого:
class Entity
{
static Manager manager;
static bool isInitialized;
public static void Initialize(Manager manager)
{
if (isInitialized)
throw Exception("Class Entity already initialized."
+ "Do not call Entity.Initialize() twice.");
isInitialized = true;
Entity.manager = manager;
}
}
Является ли «менеджер» одноэлементно? Я думаю, вам лучше смотреть в контейнеры IoC для этого. – n8wrl
Вы можете найти интересующий нас класс «Lazy». –
Servy
Просто хочу обратить ваше внимание на то, что Singletons могут вводить зависимости и хрупкость в ваших приложениях - [здесь хороший блог] (http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global -state-singletons /), чтобы помочь объяснить и избежать. Как указано в @ n8wrl, посмотрите на использование инъекции зависимостей. – RobertMS