🧩 مرجع أنماط التصميم (Design Patterns) بالعربي
كل نمط تصميم بالعربي: ما المشكلة التي يحلها، صياغته، مثال كود يوضّحه، وأشهر الأخطاء — أنماط GoF الكلاسيكية بمفهوم عابر للغات، فلا يوجد تشغيل حي في المتصفح. حاليًا 12 نمط — والقائمة تكبر.
أنماط إنشائية (Creational)
Singleton
نمط الكائن الوحيد
Singleton يضمن أن كلاس معيّن لا يملك سوى نسخة واحدة فقط طوال عمر البرنامج، ويوفّر نقطة وصول عامة لها.
Factory Method
نمط دالة المصنع
Factory Method يوفّر دالة لإنشاء الكائنات بدل استدعاء new مباشرة، بحيث تقرر الفئات الفرعية نوع الكائن الفعلي المُنشأ.
Abstract Factory
نمط مصنع المصانع
Abstract Factory يوفّر واجهة لإنشاء عائلات كاملة من الكائنات المترابطة، دون تحديد كلاساتها الملموسة في كود العميل.
Builder
نمط البناء التدريجي
Builder يفصل بناء كائن معقّد عن تمثيله النهائي، ليتم إنشاؤه خطوة بخطوة بدل constructor واحد بمعاملات كثيرة.
أنماط هيكلية (Structural)
Adapter
نمط المُكيّف
Adapter يحوّل واجهة كائن ما إلى واجهة أخرى يتوقعها الكود المستخدِم، ليعمل كائنان بواجهتين غير متوافقتين معًا دون تعديل أيٍّ منهما.
Decorator
نمط الزخرفة
Decorator يضيف سلوكًا جديدًا لكائن موجود ديناميكيًا وقت التشغيل، بتغليفه داخل كائن آخر بنفس الواجهة، دون تعديل الكلاس الأصلي أو استخدام الوراثة.
Facade
نمط الواجهة الموحدة
Facade يوفّر واجهة مبسّطة وموحّدة لنظام فرعي معقّد يتكون من عدة كلاسات متشابكة، بحيث يتعامل الكود المستخدِم مع نقطة دخول واحدة بسيطة.
أنماط سلوكية (Behavioral)
Observer
نمط المراقب
Observer يحدد علاقة واحد-إلى-متعدد: عندما يتغير كائن (Subject)، يُشعَر تلقائيًا كل الكائنات المشتركة (Observers) بدون أن يعرف تفاصيلها.
Strategy
نمط الاستراتيجية
Strategy يغلّف عائلة من الخوارزميات المتبادلة في كائنات منفصلة، ويسمح بتبديل الخوارزمية المستخدَمة وقت التشغيل دون تغيير الكود المستدعي.
Chain of Responsibility
نمط سلسلة المسؤولية
Chain of Responsibility يمرّر الطلب عبر سلسلة من المعالجين، وكل معالج يقرر إما يتعامل مع الطلب أو يمرره للمعالج التالي.
Memento
نمط اللقطة التذكارية
Memento يلتقط لقطة من الحالة الداخلية لكائن (Originator) ويحفظها خارجه، ليُستعاد لاحقًا لتلك الحالة دون كشف تفاصيله الداخلية.
Mediator
نمط الوسيط
Mediator يحدد كائنًا وسيطًا يغلّف كيفية تواصل مجموعة كائنات (Colleagues) مع بعضها، بحيث تتواصل عبره فقط بدل الإشارة لبعضها مباشرة.
🎓 تريد التعلم بالترتيب بدل المرجع السريع؟ ابدأ من مسار OOP الكامل بالعربي.