インターフェースを利用することで、直接具象クラスを明示してオブジェクト生成を行う必要をなくす。
オブジェクトの生成をサブクラスに委ねることによって、プログラム内で使用されるインスタンスの型の制約を緩めることを目的とする。
インスタンスをnew演算子を使って直接生成するのではなく、抽象メソッドに生成を委ね、どのクラスのインスタンスを作るかは、サブクラスが決定する。
インスタンスの作成時に必ず何かを実行するような場合に個々にプログラムに埋め込むのではなく、ファクトリーで作成時に実行するようにするとプログラム中ではインスタンスの作成に集中できる。