Вы несетесь по шоссе Over-Engineering ... идите первым.
Фабрики требуются редко, и нет двух одинаковых Фабрик (как вы заметили).
Бесполезно пытаться предоставить базовый класс для всех ваших фабрик, потому что у этого базового класса не будет четкой семантики. Что это строит? Bird
с? Car
с? Они не связаны ... Object
с? Это не Java!
Если вы хотите использовать фабрики (по какой-то причине), тогда Factory
должен создавать объекты 1 , все из которых происходят из общего базового класса. Если у вас есть несколько видов объектов, вам понадобятся несколько видов фабрик.
И если вы обнаружите, что заводской код повторяется, используйте шаблон, чтобы поднять общий код.