То, что вы называете «фабрикой», на самом деле является скорее контейнером внедрения зависимостей. Фабрика традиционно создает только один тип объекта.
В общем, вам следует избегать создания каких-либо базовых экземпляров, пока ваше приложение действительно не нуждается в них. У вас может быть определено 100 основных классов, из которых для любого запроса приложения может потребоваться только пара.
Во многих случаях ваше приложение захочет использовать один и тот же экземпляр или базовый класс, поэтому автоматическое клонирование, вероятно, не совсем то, что вам нужно.
Подумайте о прочтении главы «Служба» (то, что вы называете ядром) в пакете фреймворка Symfony2:
http://symfony.com/doc/current/book/service_container.html