Factory Method

Factory Methodを何のために使うか忘れてしまったので、
二度と忘れないようにメモ書き。

メリット

  1. 仮想クラスのインスタンスが定義できる
  2. インスタンスの管理ができる
  3. インスタンスのグループ分けをすることができる

1がFactory Methodの目玉ですね。
仮想クラスは通常、インスタンスを生成できませんから。
 
2は、例えば、エスプガルーダのように、
敵を倒すと敵の弾も消える、という処理を行いたいとします。
 
その場合、敵をFactoryクラスにして、
弾を撃つときに、そのインスタンス(Product)を内部に保持して、
参照を返します。
(参照保持先をBulletListとします)
 
そして敵が破壊された場合、
その敵が保持している敵弾のインスタンス全てに消滅フラグを立てて、
BulletListをイテレートして参照を消し、敵弾のインスタンスを削除します。
 
というように、楽にインスタンスのオールクリアができるわけですね。
 
3は、例えば、Factoryの実装を「連邦軍」「ジオン軍」とすると、
連邦軍Factoryは、「ガンダム」「ホワイトベース」などのユニットしか作れない、
ジオン軍Factoryは、「ザク」「ゲルググ」などのユニットしか作れない、
というようにインスタンスの生成をグループ分けできるようになります。