Sobes.tech
Junior — Middle

Ի՞նչ տարբերություններ կան օբյեկտի ուղղակի ինստանցավորումը և նրա ստեղծման համար Builder ձևանմուշի օգտագործումը:

sobes.tech AI

Պատասխան AI-ից

Օբյեկտի ուղղակի ինստանցավորումը կատարվում է կոնստրուկտորին կանչելով, օրինակ, new ClassName(). Սա պարզ և արագ միջոց է օբյեկտ ստեղծելու համար, երբ բոլոր անհրաժեշտ պարամետրերը հայտնի են և օբյեկտը շատ բարդ չէ:

Builder դիզայնի օրինակն օգտագործվում է բարդ օբյեկտներ ստեղծելու համար, որոնց պարամետրերը շատ են, հատկապես եթե դրանցից որոշները պարտադիր չեն կամ ունեն դեֆոլտ արժեքներ: Builder-ը թույլ է տալիս աստիճանաբար կարգավորել օբյեկտը, բարելավելով կոդի ընթեռնելիությունը և պահպանելիությունը:

Տարբերություններ՝

  • Ուղիղ ստեղծում: արագ է, բայց կարող է հանգեցնել երկար կոնստրուկտորների, որոնց պարամետրերը շատ են:
  • Builder: ավելի ճկուն է, բարելավում է ընթեռնելիությունը, հեշտացնում է բազմափուլ պարամետրերով օբյեկտների ստեղծումը:

Java-ում 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);
        }
    }
}
// Օգտագործում՝
User user = new User.UserBuilder()
                .setName("Ivan")
                .setAge(30)
                .build();