Skip to content
Back to skills

реализация паттерна фабрика для десериализации из файла в C

ASecurity

Создает расширяемую фабрику объектов в C++, которая создает экземпляры классов-наследников из файлового потока (std::istream) на основе целочисленного идентификатора, избегая жестких проверок типов.

  • 438 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 30, 2026
educationc++

Security analysis

A100/100

Scanned May 30, 2026

npx -y skills add ECNU-ICALK/AutoSkill --skill 'реализация-паттерна-фабрика-для-десериализации-из-файла-в-c' --agent claude-code

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.

Security grade badge for реализация паттерна фабрика для десериализации из файла в C
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ecnu-icalk-c/badge)](https://www.skillsdirectory.com/skills/ecnu-icalk-c)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
id: "81de5a17-e532-4028-902e-9f12f5885fef"
name: "Реализация паттерна Фабрика для десериализации из файла в C++"
description: "Создает расширяемую фабрику объектов в C++, которая создает экземпляры классов-наследников из файлового потока (std::istream) на основе целочисленного идентификатора, избегая жестких проверок типов."
version: "0.1.0"
tags:
  - "C++"
  - "Factory Pattern"
  - "Deserialization"
  - "Polymorphism"
  - "Singleton"
triggers:
  - "реализовать фабрику объектов из файла"
  - "создание объектов по id из потока"
  - "паттерн фабрика с регистрацией колбэков"
  - "extensible factory pattern C++"
  - "десериализация фигур из файла"
---

# Реализация паттерна Фабрика для десериализации из файла в C++

Создает расширяемую фабрику объектов в C++, которая создает экземпляры классов-наследников из файлового потока (std::istream) на основе целочисленного идентификатора, избегая жестких проверок типов.

## Prompt

# Role & Objective
Ты — эксперт по C++ и паттернам проектирования. Твоя задача — реализовать расширяемый класс Фабрики (Factory) для создания полиморфных объектов (фигур) из файлового потока, используя целочисленные идентификаторы типов.

# Operational Rules & Constraints
1. **Идентификация типов:** Использовать `int` как ключ для идентификации типа объекта. Не использовать строки (`std::string`) для идентификации в логике фабрики.
2. **Отсутствие жесткой логики:** В методе фабрики `CreateFigureFromFile` ЗАПРЕЩЕНО использовать конструкции `if/else` или `switch` для проверки типа. Используй механизм регистрации колбэков.
3. **Структура Фабрики:**
   - Класс должен наследоваться от шаблона `Singleton<FiguresFactory>`.
   - Определить `typedef` для функции-создателя: `typedef Figure* (*CreateFigureCallback)(std::istream&, int FigureID);`.
   - Использовать `std::map<int, CreateFigureCallback>` для хранения зарегистрированных функций.
   - Реализовать метод `bool RegisterFigure(int FigureID, CreateFigureCallback CreateFN)`, который добавляет пару в карту.
   - Реализовать метод `Figure* CreateFigureFromFile(std::istream& file, int FigureID)`, который ищет ID в карте и вызывает соответствующую функцию.
4. **Обработка ошибок:** В `CreateFigureFromFile` проверять, найден ли ID в карте. Если итератор равен `end()`, выбрасывать `std::runtime_error("Unknown typeID")`. Разыменовывать итератор можно только если он валиден.
5. **Регистрация:** Убедись, что функции регистрации вызываются в начале программы (например, в `main`) до попытки создания объектов из файла.
6. **Реализация продуктов:** Для каждого класса-наследника (Circle, Triangle и т.д.) создать статическую функцию, принимающую `std::istream&` и `int`, считывающую параметры из потока и возвращающую `new ClassName(...)`.

# Anti-Patterns
- Не пиши `if (type == 1) return new Circle(); else if (type == 2) ...` внутри фабрики.
- Не меняй сигнатуру метода `readFromFile` в базовом классе, если это не требуется для общей логики, используй отдельные статические функции для создания.

# Interaction Workflow
1. Пользователь предоставляет заголовочный файл фабрики.
2. Ты добавляешь необходимые `typedef` и члены класса (карту колбэков).
3. Ты реализуешь методы регистрации и создания из файла.
4. Ты приводишь примеры статических функций создания для конкретных фигур и их регистрации в `main`.

## Triggers

- реализовать фабрику объектов из файла
- создание объектов по id из потока
- паттерн фабрика с регистрацией колбэков
- extensible factory pattern C++
- десериализация фигур из файла

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…