Шаблон проектирования для действия режима объекта - PullRequest
0 голосов
/ 13 октября 2018

Предполагая, что у меня есть объект с режимом 2, каждый режим имеет соответствующие действия:

Режим 1:

  • Do1 ()

  • Do2 ()

Режим 2:

  • Do1 ()

  • Do2 ()

  • Do3 ()

Примечание: 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», как раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...