Я рекомендую использовать шаблон инициализации по требованию (т.е. синглтон с отложенной загрузкой) для вашего синглтона.В этом шаблоне, если построение экземпляра завершится неудачно, вы получите исключение, в противном случае вы получите объект.
Это улучшает ваше решение двумя способами: оно не требует дополнительных затрат на синхронизацию иэто не накладные расходы Assert
.Оба метода выдают исключение, если объект-одиночка не создан - в вашем коде вы получите IllegalArgumentException
из assert.
Используя init-on-demand ваш код будет:*
Для его использования все равно будет:
LibraryFrame libraryFrame = ComponentFactory.getLibraryFrame();
... за исключением того, что вам больше не нужны ни Assert
, ни Synchronized
.