Mishka> В локальных переменых — те, которые автоматически создаются и уничтожаются.
В случае локальных - да, но даже при этом иногда мы должны задумываться о том, не создают ли эти объекты каких-то третьих объектов. Когда создание объекта у нас централизованно, легче организовать такой контроль.
Mishka> Объект создастья на входе, автоматически уничтожится на выходе — причём в любой точке выхода.
Да, это правда, упустил. В Джава неактуально, в C++ - актуально. То есть, сильно актуально, сильно упрощает жизнь, если так не делать, то будем иметь ошибки оттого, что ресурсы не были освобождены явным образом. Но еще раз - это С++ и проблемы отсутсвия автоматической сборки мусора.
Mishka> 1. Лишний вызов.
Да.
Mishka> 2. Часто необходимость адаптировать возвращаемый объект или метод, чтобы возвращал объект нужного типа в иерархии наследования.
Не согласен. Кто мешает реализовать фабрику как захочешь?
Mishka> 3. Полностью нельзя создавать локальные объекты. Скажем, как создать простой int в Java?
Да, но об этом я говорил. Очень часто создаваемые объекты с малым оверхедом на создание - да, фабрика не нужна.