Предполагая, что у меня есть объект с режимом 2, каждый режим имеет соответствующие действия:
Режим 1:
Режим 2:
Примечание: Do1 () и Do2 () режима 1 и режима 2 аналогичны.
Я думал о состоянии и структуре стратегии, но они не подходили в этом случае.В этом случае не нужны виртуальные методы, просто наследуются.Но как изменить режим, он поймет соответствующий метод?
Какой шаблон проектирования подходит в этом случае?
Обновление 1:
Далее я проиллюстрирую проблему, пусть она будет более понятной.
// Object class
class Object
{
public:
// Assume [mode] is enum type, and
// there are 2 values: M1, M2
mode: CMode;
}
Методы для M1
void Do1();
void Do2();
Методы для M2
void Do1();
void Do2();
void Do3();
Я исследуюКак спроектировать диаграмму классов, которая может использовать объект, подобный этому:
CObject* object;
// The object is in mode 1 (M1).
object.mode = M1;
// On mode 1 (M1), only execute 2 methods.
object -> Do1();
object -> Do2();
// The object is in mode 2 (M2).
object.mode = M2;
// On mode 2 (M2), can execute 2 methods of mode 1 (M1),
// and another methods.
object -> Do1();
object -> Do2();
object -> Do3();
Я ищу, чтобы спроектировать структуру класса, чтобы сделать это, вместо того, чтобы использовать «if» или «switch-case», как раньше.