В фабричном методе мы должны написать регистр переключения или операторы if, чтобы решить, какой экземпляр создать и вернуть. Это нарушает принцип открытого закрытия, потому что - каждый раз, когда добавляется новый продукт, код фабричного метода должен обновляться.
Есть ли способ сделать эту динамику c - так, чтобы добавить новый продукт не требует каких-либо изменений заводского метода?
Например: в python мы можем импортировать пакет со списком всех доступных продуктов. Метод фабрики загружает структуру данных dict со всеми доступными продуктами вместе с их классом. Следовательно, при добавлении нового продукта код фабрики не нужно менять. Достаточно, чтобы в код пакета, который фабрика использует для импорта классов продуктов, был добавлен только продукт.