Junior
Ի՞նչ առավելություններ ունի Builder դիզայնի նմուշը սովորական կոնստրուկցիայի համեմատ։
sobes.tech AI
Պատասխան AI-ից
- Կոդի ընթերցելիություն: Հնարավորություն է տալիս ստեղծել օբյեկտներ մեծ թվով ընտրական պարամետրերով, ինչը դարձնում է ինիցիալիզացիայի գործընթացը ավելի հստակ և հասկանալի:
- Տնտեսականություն: Պարզեցնում է ընտրական պարամետրերի և դրանց համադրությունների կառավարումը:
- Անվտանգություն: Համոզվում է, որ օբյեկտը կստեղծվի միայն բոլոր անհրաժեշտ պարամետրերը սահմանելուց հետո, կանխելով անվավեր վիճակները:
- Տելեսկոպիկ կոնստրուկտորների խուսափում: Հաղթահարում է պարամետրերի թվի աճի հետ կապված խնդիրները:
Օրինակ:
// Builder-ով դաս
public class User {
private final String firstName;
private final String lastName;
private final int age; // Ընտրական
private User(Builder builder) {
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
}
public static class Builder {
private final String firstName;
private final String lastName;
private int age;
public Builder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public Builder age(int age) {
this.age = age;
return this;
}
public User build() {
// պարտադիր պարամետրերի ստուգում
if (firstName == null || lastName == null) {
throw new IllegalStateException("Անուն և ազգանուն պարտադիր են.");
}
return new User(this);
}
}
// Getter-ներ...
}
// Օգտագործում Builder
User user = new User.Builder("Иван", "Петров")
.age(30)
.build();
// համեմատություն սովորական կոնստրուկտորին
// ավելի շատ ընտրական պարամետրերով տարբերակը պահանջում է մի քանի կոնստրուկտոր կամ null փոխանցում