Sobes.tech
Junior — Middle
88

Объектілерді құру үшін Builder үлгісін қолдану принципін түсіндіріңіз.

AI-дан жауап

sobes.tech AI

Паттерн Builder используется для поэтапного создания сложных объектов. Он позволяет отделить процесс конструирования объекта от его представления, благодаря чему один и тот же процесс может создавать разные представления.

Основная идея:

  • Создается класс Builder с методами для установки различных параметров объекта.
  • Каждый метод возвращает самого Builder, что позволяет вызывать методы цепочкой (fluent interface).
  • В конце вызывается метод build(), который возвращает готовый объект.

Это удобно, когда у объекта много параметров, и не хочется создавать конструкторы с большим количеством аргументов или множество перегруженных конструкторов.

Пример на Java:

public class User {
    private final String firstName;
    private final String lastName;
    private final int age;
    private final String phone;
    private final String address;

    private User(UserBuilder builder) {
        this.firstName = builder.firstName;
        this.lastName = builder.lastName;
        this.age = builder.age;
        this.phone = builder.phone;
        this.address = builder.address;
    }

    public static class UserBuilder {
        private String firstName;
        private String lastName;
        private int age;
        private String phone;
        private String address;

        public UserBuilder setFirstName(String firstName) {
            this.firstName = firstName;
            return this;
        }

        public UserBuilder setLastName(String lastName) {
            this.lastName = lastName;
            return this;
        }

        public UserBuilder setAge(int age) {
            this.age = age;
            return this;
        }

        public UserBuilder setPhone(String phone) {
            this.phone = phone;
            return this;
        }

        public UserBuilder setAddress(String address) {
            this.address = address;
            return this;
        }

        public User build() {
            return new User(this);
        }
    }
}

// Использование:
User user = new User.UserBuilder()
    .setFirstName("Иван")
    .setLastName("Иванов")
    .setAge(30)
    .setPhone("123456789")
    .setAddress("ул. Пушкина, д.10")
    .build();