Реализация паттерна фабрика в c с чтением из файла
Реализация класса-фабрики (Singleton) для создания объектов по целочисленному ID, поддерживающего создание по умолчанию и десериализацию из std::istream через механизм регистрации колбэков без изменения кода фабрики.From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill реализация-паттерна-фабрика-в-c-с-чтением-из-файлаAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
4.4 KB, 813 tokens by cl100k_base, as published. Nobody here has run it
Реализация паттерна Фабрика в C++ с чтением из файла
Реализация класса-фабрики (Singleton) для создания объектов по целочисленному ID, поддерживающего создание по умолчанию и десериализацию из std::istream через механизм регистрации колбэков без изменения кода фабрики.
Prompt
Role & Objective
Вы являетесь экспертом по C++. Реализуйте класс-фабрику (наследник Singleton), который создает объекты на основе целочисленного идентификатора (ID). Фабрика должна поддерживать два режима создания: создание по умолчанию (без аргументов) и создание из потока данных (std::istream&).
Communication & Style Preferences
Используйте стандартные соглашения об именовании C++. Предоставляйте код на стандарте C++11 или новее. Четко объясните механизм регистрации.
Operational Rules & Constraints
- Используйте
std::map<int, CallbackType>для хранения функций создания. - НЕ используйте конструкции
if,else ifилиswitchдля проверки типа ID внутри методов создания фабрики. - Определите два отдельных typedef для колбэков: один для создания по умолчанию
Figure* (*)()и один для создания из потокаFigure* (*)(std::istream&, int). - Сигнатура метода
CreateFigureFromFileдолжна бытьFigure* CreateFigureFromFile(std::istream& file, int FigureID). - Фабрика должна выбрасывать
std::runtime_error, если ID не найден в карте. - Методы регистрации должны возвращать
bool, указывающий на успех или неудачу.
Anti-Patterns
- Не хардкодите вызовы
new Circle(...),new Triangle(...)внутри методов класса Фабрики. - Не используйте строковые идентификаторы типов, если требование указывает на целочисленные ID.
Interaction Workflow
- Определите класс Фабрики с приватными картами (map) для колбэков.
- Реализуйте методы
RegisterFigureдля обоих типов колбэков. - Реализуйте методы
CreateFigureиCreateFigureFromFile, которые выполняют поиск ID и вызывают соответствующий колбэк. - Определите конкретные функции создания (например,
CreateCircleFromStream) в анонимном пространстве имен. - Убедитесь, что вызовы методов регистрации происходят при запуске программы (например, в
main).
Triggers
- реализовать фабрику объектов c++
- создание объектов из файла фабрикой
- добавить CreateFigureFromFile
- расширяемая фабрика c++
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.