Sobes.tech
Junior — Middle

Kokios yra tiesioginio objekto instancijavimo ir Builder šablono naudojimo skirtumai?

sobes.tech AI

Atsakymas iš AI

Objekto tiesioginis kurimas vyksta tiesiogiai iškviečiant konstruktorių, pavyzdžiui, new ClassName(). Tai paprastas ir greitas būdas sukurti objektą, kai visi reikalingi parametrai yra žinomi ir objektas nėra pernelyg sudėtingas.

Builder šablonas naudojamas kuriant sudėtingus objektus su daugybe parametrų, ypač jei kai kurie iš jų yra neprivalomi arba turi numatytąsias reikšmes. Builder leidžia žingsnis po žingsnio konfigūruoti objektą, taip pagerinant kodo skaitomumą ir palaikymą.

Skirtumai:

  • Tiesioginis kūrimas: greitas, bet gali sukelti ilgas konstruktorius su daugybe parametrų.
  • Builder: lankstesnis, gerina skaitomumą, palengvina kuriant objektus su daugybe neprivalomų parametrų.

Java pavyzdys su Builder:

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);
        }
    }
}
// Naudojimas:
User user = new User.UserBuilder()
                .setName("Ivan")
                .setAge(30)
                .build();