有一个界面
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();
显然我不希望程序中到处都是这两行(请注意我已经简化了这里以便事情清楚).如果有的话,我应该使用什么设计模式?
您正在寻找http://en.wikipedia.org/wiki/Factory_method_pattern