私は比較的新しい 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();
}