首页 > 解决方案 > 对象模式动作的设计模式

问题描述

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

模式一:

模式二:

注意:模式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”。

标签: delphidesign-patterns

解决方案


推荐阅读