我是一个相对较新的 C++ 程序员。
在编写一些代码时,我创建了一些与下面的代码在概念上相似的东西。当一位朋友指出这实际上是一种工厂模式时,我阅读了有关该模式的信息并看到它与此相似。
在所有示例中,我发现工厂模式总是使用单独的类来实现,class BaseFactory{...};
而不是像我使用静态create()
成员函数实现的那样。
我的问题是:
(1)这实际上是工厂模式吗?
(2) 代码似乎有效。我实现它的方式有什么不正确的吗?(3) 如果我的实现是正确的,那么与单独的类相比
,实现静态函数的优缺点是什么。create()
BaseFactory
谢谢!
class Base {
...
virtual ~Base() {}
static Base* create(bool type);
}
class Derived0 : public Base {
...
};
class Derived1 : public Base {
...
};
Base* Base::create(bool type) {
if(type == 0) {
return new Derived0();
}
else {
return new Derived1();
}
}
void foo(bool type) {
Base* pBase = Base::create(type);
pBase->doSomething();
}