Sobes.tech
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();