Для элементов, которые вы хотите создать один раз, а затем повторно использовать, есть два соответствующих шаблона: Singleton и Cache. Если вы будете использовать этот предмет вечно, синглтон в порядке. Память, выделенная этому экземпляру, никогда не будет очищена. Если вы будете повторно использовать элемент некоторое время, но, возможно, эта функция не будет использоваться в течение нескольких дней, я предлагаю использовать кэш. Затем память может быть очищена, когда элемент больше не используется.
Если вы используете Singleton, вы, вероятно, захотите просто инициализировать шрифты напрямую, а не использовать шаблон Lazy init. Для меня шрифты звучат довольно просто и вряд ли ошибятся. Однако, если элемент может потерпеть неудачу во время создания (возможно, из-за отсутствующего файла шрифта или чего-то еще), ленивый шаблон по крайней мере позволяет повторить попытку в следующий раз. Вы не сможете восстановить статический инициализатор позже, даже если он потерпит неудачу, без перезапуска всего приложения. Будьте осторожны, чтобы ограничить эти попытки!
Наконец, имя вашего класса "ViewerStatic" вызывает озабоченность. Существует анти-паттерн, известный как объект «Бог». Я называю это «ведром». Если вы создадите это, материал придет. Вскоре вы найдете все виды вещей, которые выбрасывают в ведро. Ваш класс ViewerStatic станет огромным. Было бы лучше иметь класс с именем «FontFlyWeights», а затем еще один с именем «ConstantStrings» или «SystemDialogFactory» ... и т. Д.