Если бы отцы-основатели жили сегодня, им бы понравилась Java. Вместо того, чтобы задекларировать глобальный singleton и сказать "the army always exists", они этого не говорят, но при этом в mega-factory class-е добавляют метод для создания этого singleton'а и сразу вызывают его. Причём, понятно, что функционально это эквивалентно, т.к. права и процедуры роспуска армии не предусмотрены, singleton всё равно живёт вечно :)
Upd.: я, кажется, понял. Это они просто имплементировали lazy initialization. Вызывают-то метод не сразу, а только перед первой войной.