クラス内外のビルダーパターンを使用するメリットは何ですか?ビルダーパターンは対外クラスですか?
内部クラス:
public class Person {
private String name;
private String eyeColor;
private String hairColor;
public Person setName(String name) {
this.name = name;
return this;
}
public Person setEyeColor(String eyeColor) {
this.eyeColor = eyeColor;
return this;
}
public Person setHairColor(String hairColor) {
this.hairColor = hairColor;
return this;
}
}
// Example usage:
Person p = new Person()
.setName("Bob")
.setHairColor("Black")
.setEyeColor("Brown")
外クラス:それは依存
public class Person {
private String name;
private String eyeColor;
private String hairColor;
public Person(String name, String eyeColor, String hairColor) {
this.name = name;
this.eyeColor = eyeColor;
this.hairColor = hairColor;
}
}
public class PersonBuilder {
private String name;
private String eyeColor;
private String hairColor;
public Person build() {
return new Person(name, eyeColor, hairColor);
}
public PersonBuilder with(String name) {
this.name = name;
return this;
}
public PersonBuilder setEyeColor(String eyeColor) {
this.eyeColor = eyeColor;
return this;
}
public PersonBuilder setHairColor(String hairColor) {
this.hairColor = hairColor;
return this;
}
}
// Example usage:
Person p = new PersonBuilder()
.setName("Bob")
.setHairColor("Black")
.setEyeColor("Brown")
.build();
これは意見に基づいています...しかし、私はそれが混乱を下げることがあると思います。 MyClass.Builder、MyClass2.Builderなどがあり、MyClassBuilder、MyClass2Builderなどのクラスは一切ありません。 – ppeterka
簡単なことについては、それほど重要ではありませんが、セッターの戻り値の型を他のもの(複雑な設定者で)表示することができ、その場合、外部のものはより柔軟性を提供するであろう。個人的に私は外部のものと一緒に行きます。 – Thihara
IMHOの場合、ビルダーはビルドされるクラスによってのみ使用されるため、内部クラスにする必要があります。そのため、それを通常のクラスにすることには本当のメリットはありません。 – hfontanez