有一个界面
class abc {
public:
virtual int foo() = 0;
...
}
class concrete1: public abc {
public:
int foo() {
..
}
class concrete2 : public abc {
public:
int foo() {
..
}
}
Run Code Online (Sandbox Code Playgroud)
现在在我的主程序中,我需要根据变量的值构造类
abc *a;
if (var == 1)
a = new concrete1();
else
a = new concrete2();
Run Code Online (Sandbox Code Playgroud)
显然我不希望程序中到处都是这两行(请注意我已经简化了这里以便事情清楚).如果有的话,我应该使用什么设计模式?