Builder
نمط البناء التدريجي Builder
Builder يفصل بناء كائن معقّد عن تمثيله النهائي، ليتم إنشاؤه خطوة بخطوة بدل constructor واحد بمعاملات كثيرة.
بدل constructor يستقبل عشر معاملات اختيارية دفعة واحدة (Telescoping Constructor)، يوفّر Builder دوالًا منفصلة لكل خطوة بناء، غالبًا مع إرجاع this للسماح بسلسلة استدعاءات (Fluent Interface). كائن Director اختياري يجمّع تشكيلات بناء جاهزة يُعاد استخدامها.
الصياغة
new Builder().setA(x).setB(y).build();
📄 مثال
class PizzaBuilder {
#pizza = { size: "medium", toppings: [] };
setSize(size) { this.#pizza.size = size; return this; }
addTopping(t) { this.#pizza.toppings.push(t); return this; }
build() { return this.#pizza; }
}
const pizza = new PizzaBuilder().setSize("large").addTopping("جبنة").build();
console.log(pizza); // { size: 'large', toppings: ['جبنة'] }أهم النقاط
| النقطة | الوظيفة |
|---|---|
| التصنيف | نمط إنشائي (Creational) |
| يحل مشكلة | constructor طويل بمعاملات اختيارية كثيرة (telescoping constructor) |
| الفرق عن Abstract Factory | Builder يبني كائنًا واحدًا معقدًا على خطوات؛ Abstract Factory يُنتج عائلة كائنات فورًا |
💡 نصائح عملية
- الـ Director اختياري تمامًا — لو سلسلة الاستدعاءات وحدها واضحة، لا داعٍ له
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار OOP الكامل بالعربي.