Нет необходимости использовать фабричный конструктор.Конструктор фабрики был удобен, когда new
еще не был необязательным, потому что тогда он new MyClass()
работал для классов, где конструктор каждый раз возвращал новый экземпляр или когда класс возвращал кэшированный экземпляр.Вы не должны были знать, как и когда объект был создан.
Вы можете изменить
factory DbHelper(){ return _db;}
на
DbHelper get singleton { return _db;}
и получить экземпляр, используя
var mySingletonReference = DbHelper.singleton;
вместо
var mySingletonReference = DbHelper();
Это просто вопрос предпочтений.