Я генерирую последовательность Step
объектов, которые отличаются "Типом" и данными, содержащимися внутри. например:
Объекты Step
в основном должны быть структурами, которые выглядят так:
{ GRAB, CASCADE_ONE, FACEUP, SOMEOTHERDATA },
{ DROP, DECK, FACEDOWN, MOREDATA, ANDSOMEMORE },
{ MOVE, 34, 89 },
где GRAB
, MOVE
и DROP
обозначают StepType
:
typedef enum
{
GRAB,
DROP,
MOVE
}StepType;
Как видите, в зависимости от StepType
каждая из этих структур имеет переменное количество полей данных после StepType
.
Я планирую перебрать последовательность этих структур и выполнить определенное действие на основе поля StepType
. Моя первая догадка заключается в том, что это должны быть объекты классов, производных от абстрактного класса Step
, т.е. я должен создать класс GrabStep
, класс MoveStep
и класс DropStep
.
Хороший ли это дизайн, и если да, то должен ли я создавать их, используя фабричный метод? Если использовать фабричный метод, то как инициализировать поля внутри объектов?