Синглтон и заводская модель служат совершенно разным целям. Этот шаблон синглтона используется для того, чтобы гарантировать наличие только одного экземпляра класса. Фабричный шаблон используется для абстрактного создания объекта. Вы можете использовать фабрику для создания синглтона, а сами фабрики часто являются синглетонами, но нет ни одного против другого. Они дополняют друг друга, а не противоположны.
В вашем случае реализация одноэлементного шаблона гарантирует, что вы можете иметь только один экземпляр каждого класса. Вы можете использовать фабрику, которая не создает новые экземпляры, если они уже существуют.
Если у вас есть интерфейс для ведения журнала и несколько реализаций для него (например, запись в файл или запись в сеть), вы можете использовать фабрику для динамического создания реализаций и скрыть процесс создания экземпляра, который может отличаться для каждой реализации. (например, открыть файл или открыть сокет). Вы все еще можете сделать свои объекты одиночными, если вы этого хотите.