C++でデザインパターンを実装していこうよ 第10回 FactoryMethodパターン

適切な実装の集合を実体化するという目的のパターンで、AbstractFactoryとあんまり変わりません。

AbstractFactoryは委譲で行っていたことを、FactoryMethodパターンでは継承を使って行っている、と考えて良いんだと思います。

「これはAbstractFactory!こっちはFactoryMethod!」なんてはっきり区別する必要はあまり無いように感じます。

むしろ、適切な実装の集合を実体化するという目的に対して、できるだけ弱い関連である委譲を使い、どうしても継承を使わなければならないときだけ継承を使う、っていう指針を持つことの方が大事じゃないかなと思います。

ということで、今回はこちらです。

http://www.dofactory.com/Patterns/PatternFactory.aspx#_self2

書き直したのがこちらです。

https://github.com/TakahashiShuuhei/DesignPatternPractice/blob/master/FactoryMethod.cpp

"C++ではコンストラクタで仮想関数が使えない"ってのはどこかで読んだ気がしますがすっかり頭から抜けていて、結構悩みました。