Instantly share code, notes, and snippets.

Embed
What would you like to do?
イミュータブルなビルダーパターン

ミュータブルなビルダー

ビルダークラスを簡単に作ろうとすると,どうしてもミュータブルになりがちです.

class Builder {
  String foo;
  String bar;

  Builder foo(String foo) {
    this.foo = foo;
    return this;
  }

  Builder bar(String bar) {
    this.bar = bar;
    return this;
  }

  Something build() {
    return new Something(foo, bar);
  }
}

上記のパターンだと, foo(String)/bar(String) を何度も呼び出しが可能ですし,何度呼んだか(その状態を)忘れてしまうこともあります. また,本当に必要な項目とオプションの項目がわからず,ビルダーの本来の目的である正しい状態のオブジェクトが取得できないということもあります.

そこで,必要な項目は必ず設定できるようにして,オプショナルな項目の設定は飛ばせるようなビルダーが求められます. それをイミュータブルなビルダーパターンと勝手に呼んでいます.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment