有一个界面
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();
显然我不希望程序中到处都是这两行(请注意我已经在这里简化了以便事情清楚)。如果有的话,我应该使用什么设计模式?
答案 0 :(得分:6)
答案 1 :(得分:2)
首先,您应该使用litb提到的工厂或工厂方法。
但除此之外,我建议您使用枚举,或至少使用符号常量来确定要实例化的类。这更容易阅读,它允许您为意外值建立安全措施。