Научился: Синглтон применяется в тех случаях, когда нужен только один экземпляр класса. Создается один раз и дальше классы обращаются только к этому экземпляру. Является одним из самых простых паттернов, тем не менее имеет разные подводные камни, если дело касается многопоточности, виртуальных машин и прочее. Трудности: пришлось повторить, что такое lazy initialization