Sobes.tech
Junior — Middle

Jakie są różnice między bezpośrednim tworzeniem obiektu a użyciem wzorca Builder do jego tworzenia?

sobes.tech AI

Odpowiedź od AI

Inicjalizacja obiektu odbywa się bezpośrednio przez wywołanie konstruktora, na przykład new ClassName(). To prosty i szybki sposób tworzenia obiektu, gdy wszystkie niezbędne parametry są znane, a obiekt nie jest zbyt skomplikowany.

Wzorzec Builder jest używany do tworzenia złożonych obiektów z wieloma parametrami, szczególnie jeśli niektóre z nich są opcjonalne lub mają wartości domyślne. Builder pozwala na stopniową konfigurację obiektu, poprawiając czytelność i utrzymanie kodu.

Różnice:

  • Tworzenie bezpośrednie: szybkie, ale może prowadzić do długich konstruktorów z wieloma parametrami.
  • Builder: bardziej elastyczny, poprawia czytelność, ułatwia tworzenie obiektów z wieloma parametrami opcjonalnymi.

Przykład Builder w 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);
        }
    }
}

// Użycie:
User user = new User.UserBuilder()
                .setName("Ivan")
                .setAge(30)
                .build();