Builder dizayn nümunəsi (Builder Pattern)
Dizayn nümunələri
1
Yazı
1
Yazarlar
33
Baxış
-
Builder dizayn nümunəsi, mürəkkəb obyektlərin yaradılmasını onların təqdimatından ayırmağa imkan verir. Bu, zəncirvari çağırma prosesindən istifadə edərək müxtəlif təqdimatlara malik obyektlər yaratmağa şərait yaradır.
️ Misal üzərindən izah
Car
class-ıclass Car { constructor(builder) { this.make = builder.make; this.model = builder.model; this.year = builder.year; this.color = builder.color; this.engine = builder.engine; } toString() { return `${this.year} ${this.make} ${this.model} in ${this.color} with a ${this.engine} engine`; } }
Burada
Car
class-ı avtomobilin xüsusiyyətlərini saxlayır: marka, model, il, rəng və mühərrik. Bu classCarBuilder
vasitəsilə yaradılır.
CarBuilder
class-ıclass CarBuilder { constructor(make, model) { this.make = make; this.model = model; } setYear(year) { this.year = year; return this; } setColor(color) { this.color = color; return this; } setEngine(engine) { this.engine = engine; return this; } build() { return new Car(this); } }
CarBuilder
addım-addım obyektin qurulmasına imkan verir. Hər metod müəyyən xüsusiyyəti təyin edir vəthis
qaytardığı üçün zəncirvari çağırma (method chaining) mümkündür.
🧠 Kodun izahı
- Zəncirvari interfeys (Fluent interface):
CarBuilder
metodlarının hər birithis
qaytararaq, ardıcıl çağırmalara imkan verir. - Ayrılmış məsuliyyət (Separation of concerns): Avtomobilin necə qurulacağı
CarBuilder
-də, nəyi təmsil etdiyi isəCar
class-ında müəyyən edilir. - Dəyişməzlik (Immutability):
Car
obyekti qurulduqdan sonra onun sahələri dəyişməz qalır.
️ İstifadə nümunəsi
const car = new CarBuilder("Toyota", "Camry") .setYear(2021) .setColor("Red") .setEngine("V6") .build(); console.log(car.toString()); // Nəticə: 2021 Toyota Camry in Red with a V6 engine
- Zəncirvari interfeys (Fluent interface):
Bilik paylaşdıqca artan bir sərvətdir