Eyes, JAPAN Blog > Builderパターン

Builderパターン

makuta

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

builderとは、建築者や建築業者などを意味します。

建物を立てるときは、まず地盤を固めて、骨組みを作り、下から上に少しずつ作っていきます。
一般に複雑な構造を持ったものを作り上げるとき、一気に完成させるのは難しいです。なので、まずは全体を構成している各部分を作ってから、段階を踏んで組み上げていくことになります。

例えば、ある条件によって生成するオブジェクトを変更するといった場合は、普通に考えれば、ifやswitchなどで処理を分岐すれば良いのですが、オブジェクトの生成が複雑だと、大量のif文やswicth文を使用することになります。こういった時に「何を生成するのか」に依存しないように具体的な生成手順がまとまっていると、簡単に色々なオブジェクトを生成できますよね!?
そこで、登場するのがBuilderパターンです。

 

Builderパターンの目的
複合オブジェクトについて、その作成過程を表現形式に依存しないものにすることにより、同じ作成過程で異なる表現形式のオブジェクトを生成できるようにする

 

つまり、Builderパターンは、オブジェクトの生成に注目したパターンで、オブジェクトの「生成の手順」と「生成の手段」を分離することにより、同じ過程で異なるオブジェクトの生成をすることができるパターンなのです。
1つのクラスに生成手順と生成手段を全てまとめた場合、クラスの中身が複雑になりすぎる傾向にあります。そこで、Builderパターンを適用して、生成手段と生成手順を分離することで構造がシンプルになり、再利用性も高くなるのです。

ということで今回は、「何を生成するか」と「どのように生成するか」を分けてインスタンスを生成する、Builderパターンというデザインパターンについてでした。

Comments are closed.