对象模式动作的设计模式

时间:2018-10-13 07:05:27

标签: delphi design-patterns

假设我有一个具有2种模式的对象,则每种模式都有其相应的动作:

模式1:

  • Do1()

  • Do2()

模式2:

  • Do1()

  • Do2()

  • Do3()

注意:模式1和模式2的Do1()和Do2()相似。

我想到了状态和策略模式,但是在这种情况下它们不合适。这种情况下,不需要虚拟方法,只需继承即可。但是如何更改模式,它将了解相应的方法?

在这种情况下哪种设计模式合适?

更新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”。

0 个答案:

没有答案