Когда мне нужно было это сделать, я создал свою собственную фабрику объектов, которая использует специально созданный подкласс TStringList, в настоящее время я использую Delphi 7, поэтому класс списка строк поддерживает только прикрепление объекта к строке, затем я получил подкласс TStringList чтобы можно было обрабатывать и типы классов, теперь я могу создать экземпляр объекта, просто передав его имя класса фабрике. Работает так:
1-й - загрузка фабрики одноэлементных объектов;
2-й - Зарегистрировать любой объект на заводе, может быть в разделе инициализации устройства;
Основными методами Фабрики могут быть: isClassRegistered, registerClass, instantiateClass (ClassName: STring): TObject;
Таким образом, я могу создать экземпляр любого объекта или использовать предыдущий экземпляр объекта, или даже их подмножество.
Я скорее использую тип Enumerated вместо строки для идентификации класса.
Замечания: Это очень, очень краткий пример, полностью функциональный код более сложен, но, поверьте мне, не слишком.