FactoryMethodパターンとAbstractFactoryパターンについて
FactoryMethodパターンはあるオブジェクトを生成するインターフェイスを作成し、対象オブジェクトの作成に使用することで、より柔軟にしようというもの。
make_shared<derived> や new derived など、インスタンスの生成はどうしても具体的になってしまう。
オブジェクトの生成すらもインターフェイスを通すことに具体的になる場所を後のほうに押し付ける。
AbstractFactoryパターンはFactoryMethodパターンを少し進めたもの。
ある関係を持つAとBのインスタンスを生成する場合、1つ1つにFactoryMethodを作成するより、AとBを作成するインターフェイスを持ったFactoryを作成しようという話。