А вот что еще в голову пришло.
Если применять подсчет ссылок — delete вызывает экземпляр.
Если применять FAILED — delete вызывает объект класса.
New — все время вызывает объект класса.
Если случится так что классы фабрики и экземпляра используют разные кучи

— не может ли это привести к ошибке?