Как применить шаблон стратегии к набору производных классов? ⇐ C++
Как применить шаблон стратегии к набору производных классов?
Я изучал шаблон стратегии. Я рассматривал это как метод, позволяющий написать дополнительный код для существующего класса с минимальными изменениями в исходном классе.
Я хотел бы применить эту технику в своем коде, но в нем есть набор производных классов, для которых я хочу реализовать стратегии.
Чтобы привести конкретный пример. Допустим, у меня есть пустой класс Shape и два подкласса Rectangle (ширина целого числа, высота целого числа) и Circle (целое число радиуса).
Я хотел бы реализовать шаблон стратегии сериализации, который может записать форму в виде простого файла TOML.
Для одной фигуры я могу сделать это вот так:
класс Rectangle; класс SerializerStrategy { публика: виртуальный std::string сериализовать (const Rectangle& прямоугольник) = 0; }; класс TomlSerializer: public SerializerStrategy { публика: std::string сериализация(const Rectangle& прямоугольник) переопределить { вернуть "[Прямоугольник]\n" "width = " + std::to_string(rectangle.getWidth()) + "\n" "height = " + std::to_string(rectangle.getHeight()); } }; Но я не могу найти решения, которое позволило бы мне, например, перебирать вектор фигур, которые могут быть прямоугольниками или кругами, и сериализовать каждую из них.
Я пробовал прочитать множество вопросов, связанных с переполнением стека. В качестве эксперимента я написал свой собственный упрощенный пример кода. Я смотрел видеолекции по C++. Я спросил у Клода А.И. пример кода. Я не нашел решения ни в одной из этих попыток.
Я изучал шаблон стратегии. Я рассматривал это как метод, позволяющий написать дополнительный код для существующего класса с минимальными изменениями в исходном классе.
Я хотел бы применить эту технику в своем коде, но в нем есть набор производных классов, для которых я хочу реализовать стратегии.
Чтобы привести конкретный пример. Допустим, у меня есть пустой класс Shape и два подкласса Rectangle (ширина целого числа, высота целого числа) и Circle (целое число радиуса).
Я хотел бы реализовать шаблон стратегии сериализации, который может записать форму в виде простого файла TOML.
Для одной фигуры я могу сделать это вот так:
класс Rectangle; класс SerializerStrategy { публика: виртуальный std::string сериализовать (const Rectangle& прямоугольник) = 0; }; класс TomlSerializer: public SerializerStrategy { публика: std::string сериализация(const Rectangle& прямоугольник) переопределить { вернуть "[Прямоугольник]\n" "width = " + std::to_string(rectangle.getWidth()) + "\n" "height = " + std::to_string(rectangle.getHeight()); } }; Но я не могу найти решения, которое позволило бы мне, например, перебирать вектор фигур, которые могут быть прямоугольниками или кругами, и сериализовать каждую из них.
Я пробовал прочитать множество вопросов, связанных с переполнением стека. В качестве эксперимента я написал свой собственный упрощенный пример кода. Я смотрел видеолекции по C++. Я спросил у Клода А.И. пример кода. Я не нашел решения ни в одной из этих попыток.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Итеративный алгоритм на основе классов с шаблоном стратегии с шаблоном стратегии
Anonymous » » в форуме Python - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-