javaでのBuilderパターン

Builderパターンは、処理内容を定義するBuilderクラスと、処理順番を定義するDirectorクラスの2つに分けることで、柔軟に処理を変更できるようにするパターンです。
Builderクラスの定義により処理内容が変わっても都度処理内容を記述する必要が無くなり、Directorクラスの定義により処理順番が変わっても都度処理順番を記述する必要が無くなります。

今回は、RPGのダメージ計算を模したサンプルコードを作成してみました。
ゲームが変わると処理内容が変わるのですが、Builderクラスを定義することで処理内容が変更されても利用者側で処理内容を都度記述する必要が無くなります。
また、ダメージを与える手段によってはダメージが可変になったり固定になったりするのですが、Directorクラスを定義することで利用者側で都度ダメージを可変にしたり固定にしたりするための具体的な記述をする必要が無くなります。

【サンプルコード】

・DamageBuilder.java

・DamageDto.java

・DamageBuilderGameA.java

・DamageBuilderGameB.java

・DamageDirectorVariable.java

・DamageDirectorFixed.java

・DamageCalcMain.java

【実行結果】


いかがでしたでしょうか。

プログラムを作っていると、「処理の順番は同じなのに処理の中身が少しずつ違う…」といったことや「処理の中身は同じなのに処理の順番が少しずつ違う…」といったことがあると思います。私も、そのようなケースでは、共通関数は作りつつも同じ記述を何か所にもコピーせざるを得なくなり、かなり冗長なコードを作ってしまっていました。
Builderパターンは、そのようなケースで効果を発揮します。同じ記述を何か所にもコピーすると保守する時に(テストも含めて)大変なので、中身や順番が少しずつ違うなと思ったら適用することをお勧めします。

次回も、開発の役に立つ情報を発信していきたいと思います!

カテゴリーjava

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA