抽象基类的设计问题?

时间:2008-12-30 07:50:54

标签: c++

有一个界面

class abc {

public:
virtual int foo() = 0;  
...

}

class concrete1: public abc { 

public:
int foo() { 

..
}


class concrete2 : public abc {

public:
int foo() {

..
}


}

现在在我的主程序中,我需要根据变量值

构造类
abc *a;
if (var == 1)
   a = new concrete1();
else
   a = new concrete2();

显然我不希望程序中到处都是这两行(请注意我已经在这里简化了以便事情清楚)。如果有的话,我应该使用什么设计模式?

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:2)

首先,您应该使用litb提到的工厂或工厂方法。

但除此之外,我建议您使用枚举,或至少使用符号常量来确定要实例化的类。这更容易阅读,它允许您为意外值建立安全措施。