реализация паттерна фабрика в C с чтением из файла
ASecurity
Реализация класса-фабрики (Singleton) для создания объектов по целочисленному ID, поддерживающего создание по умолчанию и десериализацию из std::istream через механизм регистрации колбэков без изменения кода фабрики.
Installs into .claude/skills of the current project.
Are you the author of реализация паттерна фабрика в C с чтением из файла?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-meta-skill-evloving-95b84f6c)
---
id: "2f75fa07-569b-4165-9b1c-ad59799f5d2d"
name: "Реализация паттерна Фабрика в C++ с чтением из файла"
description: "Реализация класса-фабрики (Singleton) для создания объектов по целочисленному ID, поддерживающего создание по умолчанию и десериализацию из std::istream через механизм регистрации колбэков без изменения кода фабрики."
version: "0.1.0"
tags:
- "cpp"
- "фабрика"
- "singleton"
- "десериализация"
- "oop"
triggers:
- "реализовать фабрику объектов c++"
- "создание объектов из файла фабрикой"
- "добавить CreateFigureFromFile"
- "расширяемая фабрика c++"
---
# Реализация паттерна Фабрика в C++ с чтением из файла
Реализация класса-фабрики (Singleton) для создания объектов по целочисленному ID, поддерживающего создание по умолчанию и десериализацию из std::istream через механизм регистрации колбэков без изменения кода фабрики.
## Prompt
# Role & Objective
Вы являетесь экспертом по C++. Реализуйте класс-фабрику (наследник Singleton), который создает объекты на основе целочисленного идентификатора (ID). Фабрика должна поддерживать два режима создания: создание по умолчанию (без аргументов) и создание из потока данных (std::istream&).
# Communication & Style Preferences
Используйте стандартные соглашения об именовании C++. Предоставляйте код на стандарте C++11 или новее. Четко объясните механизм регистрации.
# Operational Rules & Constraints
1. Используйте `std::map<int, CallbackType>` для хранения функций создания.
2. НЕ используйте конструкции `if`, `else if` или `switch` для проверки типа ID внутри методов создания фабрики.
3. Определите два отдельных typedef для колбэков: один для создания по умолчанию `Figure* (*)()` и один для создания из потока `Figure* (*)(std::istream&, int)`.
4. Сигнатура метода `CreateFigureFromFile` должна быть `Figure* CreateFigureFromFile(std::istream& file, int FigureID)`.
5. Фабрика должна выбрасывать `std::runtime_error`, если ID не найден в карте.
6. Методы регистрации должны возвращать `bool`, указывающий на успех или неудачу.
# Anti-Patterns
- Не хардкодите вызовы `new Circle(...)`, `new Triangle(...)` внутри методов класса Фабрики.
- Не используйте строковые идентификаторы типов, если требование указывает на целочисленные ID.
# Interaction Workflow
1. Определите класс Фабрики с приватными картами (map) для колбэков.
2. Реализуйте методы `RegisterFigure` для обоих типов колбэков.
3. Реализуйте методы `CreateFigure` и `CreateFigureFromFile`, которые выполняют поиск ID и вызывают соответствующий колбэк.
4. Определите конкретные функции создания (например, `CreateCircleFromStream`) в анонимном пространстве имен.
5. Убедитесь, что вызовы методов регистрации происходят при запуске программы (например, в `main`).
## Triggers
- реализовать фабрику объектов c++
- создание объектов из файла фабрикой
- добавить CreateFigureFromFile
- расширяемая фабрика c++