Junior — Middle
Ποιες διαφορές υπάρχουν μεταξύ της άμεσης δημιουργίας ενός αντικειμένου και της χρήσης του μοτίβου Builder για τη δημιουργία του;
sobes.tech AI
Απάντηση από AI
Ο άμεσος ορισμός ενός αντικειμένου γίνεται μέσω της κλήσης του κατασκευαστή, για παράδειγμα, new ClassName(). Αυτή είναι μια απλή και γρήγορη μέθοδος δημιουργίας αντικειμένου όταν όλοι οι απαραίτητοι παράμετροι είναι γνωστοί και το αντικείμενο δεν είναι πολύ περίπλοκο.
Το μοτίβο Builder χρησιμοποιείται για τη δημιουργία σύνθετων αντικειμένων με πολλά παραμέτρους, ειδικά αν μερικές από αυτές είναι προαιρετικές ή έχουν προεπιλεγμένες τιμές. Ο Builder επιτρέπει την διαδοχική διαμόρφωση του αντικειμένου, βελτιώνοντας την αναγνωσιμότητα και τη διαχειρισιμότητα του κώδικα.
Διαφορές:
- Άμεση δημιουργία: γρήγορη, αλλά μπορεί να οδηγήσει σε μακριούς κατασκευαστές με πολλούς παραμέτρους.
- Builder: πιο ευέλικτο, βελτιώνει την αναγνωσιμότητα, διευκολύνει τη δημιουργία αντικειμένων με πολλαπλές προαιρετικές παραμέτρους.
Παράδειγμα Builder σε Java:
public class User {
private String name;
private int age;
private String address;
private User(UserBuilder builder) {
this.name = builder.name;
this.age = builder.age;
this.address = builder.address;
}
public static class UserBuilder {
private String name;
private int age;
private String address;
public UserBuilder setName(String name) {
this.name = name;
return this;
}
public UserBuilder setAge(int age) {
this.age = age;
return this;
}
public UserBuilder setAddress(String address) {
this.address = address;
return this;
}
public User build() {
return new User(this);
}
}
}
// Χρήση:
User user = new User.UserBuilder()
.setName("Ivan")
.setAge(30)
.build();