関連するオブジェクトの生成方法をグループ化し、具体的なオブジェクトを特定せずに生成するためのインターフェースを提供する。
ClientのインスタンスがConcreteFactoryのインスタンスにオブジェクトの生成を委ねるという、オブジェクト同士の関連である。
Clientのプログラムを変更することなく、実行時の引数の違いによって、処理フローを変更するときに使う。
Clientは、ファクトリを引数を指定して実行する。作られるインスタンスはすべてメソッドなどの名前が同じで、どのインスタンスでも同じように実行できる。