GoFデザインパターンの生成系に分類されるBuilderパターンについて解説していきます。
Builder Patternとは
Builder Patternはオブジェクト指向におけるオブジェクトの生成問題を柔軟に解決してくれるデザインパターンです。
具体的には
複雑なオブジェクトの生成プロセスを分離させるデザインパターン
Wikipediaより (https://en.wikipedia.org/wiki/Builder_pattern#Definition)
と定義されています。
Builder Patternのメリット
Builder Patternのメリットは以下の通り
- プロダクト(生成したいオブジェクト)のリファクタリングが可能になる。
- 生成工程のコードをカプセル化する出来る。
- 生成工程のコントロールが出来る。
1.2.はAPIを提供する側だけでなく、利用する側にも大きなメリットがあります。オブジェクトの中身が変更されたとしてもカプセル化することで利用者は特に気にせずにプログラムすることが出来ます。
3.はAPIの提供者が利用者の生成プロセスをコントロールすることが出来ます。
Builder Patternのデメリット
- それぞれのプロダクトにビルダーが必要 (当然異なる種類のプロダクトには異なるビルダーが必要になります)
- Builder Classesは必ずmutable (生成する方法がなくなるので)
- 依存性注入が複雑になる (生成系が分離しているので)
まとめ
Builder Patternについて今日は勉強していきました。
色々実装方法はあると思います。ただ最近は生成したいプロダクトのコンストラクタにアクセス出来ないようにし、Builderクラスでプロダクトのオブジェクトを返すbuild()メソッドを実装するというのが流行りなのかなと感じています。
コメント