Параметризированная фабрика - это вариант паттерна Фабричный метод, где создание объектов зависит от входных параметров. Вместо того чтобы создавать фабричные методы для каждого типа объекта, используется единый метод, который на основе параметра определяет, какой конкретный класс инстанцировать.

Стоит использовать когда система должна оставаться гибкой и поддерживать легкое добавление новых типов объектов, когда логика создания объектов зависит от внешних параметров или когда нужно инкапсулировать процесс создания объектов.

Используется в Django Forms, SQLAlchemy, GUI-библиотеках и в веб-фреймворках.

Пример: `class CachedDocumentFactory: _cache = {}

@classmethod def create_document(cls, doc_type: str) -> Document: if doc_type not in cls.cache: if doc_type == "pdf": cls.cache[doc_type] = PDFDocument() elif doc_type == "word": cls.cache[doc_type] = WordDocument() elif doc_type == "excel": cls.cache[doc_type] = ExcelDocument() else: raise ValueError(f"Неизвестный тип документа: {doc_type}") return cls._cache[doc_type]

#Использование

if name == "main": doc1 = CachedDocumentFactory.create_document("pdf") doc2 = CachedDocumentFactory.create_document("pdf") print(doc1 is doc2) # True (один и тот же объект) #weekofpatterns`