تخطَّ إلى المحتوى

🧩 شرح أنماط التصميم (Design Patterns)

مقدمة في أنماط التصميم ومبادئ SOLID

الدرس 1 من 28· ⏱ 2 دقائق قراءة· 🗓 آخر تحديث: ٢٣ يوليو ٢٠٢٦

ما هي أنماط التصميم؟

أنماط التصميم (Design Patterns) هي حلول مجربة لمشاكل متكررة في البرمجة كائنية التوجه. ليست مكتبة ولا كود جاهز—بل هي هيكل عام يمكنك تطبيقه على مشكلتك.

لماذا نستخدم أنماط التصميم؟

  • إعادة استخدام الحلول — لا تخترع العجلة
  • لغة مشتركة بين المطورين — تقول "Strategy" فيفهم الجميع
  • مرونة وصيانة أفضل للكود

مبادئ SOLID

المبدأالمعنى
Single Responsibilityكل كائن مسؤول عن شيء واحد
Open/Closedمفتوح للتمديد، مغلق للتعديل
Liskov Substitutionالكائنات الفرعية قابلة للاستبدال
Interface Segregationواجهات صغيرة ومتخصصة
Dependency Inversionاعتمد على التجريد، ليس على التنفيذ

S — مبدأ المسؤولية الواحدة

// ❌ سيئ: الكلاس يعمل كل شيء
class Report {
  generate() {}
  saveToFile() {}
  sendEmail() {}
}

// ✅ جيد: كل كلاس مسؤولية واحدة
class ReportGenerator { generate() {} }
class ReportSaver { saveToFile() {} }
class EmailService { sendEmail() {} }

O — مبدأ Open/Closed

// ❌ سيئ: تعديل الكود كل مرة نضيف شكل
class ShapeDrawer {
  draw(shape) {
    if (shape.type === 'circle') { /* ... */ }
    if (shape.type === 'square') { /* ... */ }
  }
}

// ✅ جيد: نمدد ولا نعدل
class Shape { draw() {} }
class Circle extends Shape { draw() { /* ... */ } }
class Square extends Shape { draw() { /* ... */ } }

L — مبدأ Liskov Substitution

// ❌ انتهاك: الكائن الفرعي يغير سلوك الأب
class Bird { fly() {} }
class Penguin extends Bird { fly() { throw new Error('لا يطير'); } }

// ✅ الوراثة الصحيحة
class Bird {}
class FlyingBird extends Bird { fly() {} }
class Penguin extends Bird {}

I — مبدأ Interface Segregation

// ❌ واجهة ثقيلة
class Worker {
  work() {}
  eat() {}
  sleep() {}
}

// ✅ واجهات صغيرة
class Workable { work() {} }
class Eatable { eat() {} }
class Sleepable { sleep() {} }

D — مبدأ Dependency Inversion

// ❌ اعتماد على التنفيذ المباشر
class Store {
  constructor() { this.db = new MySQLDatabase(); }
}

// ✅ اعتماد على التجريد
class Store {
  constructor(db) { this.db = db; }
}

🎯 التالي: نمط Strategy

شرح مقدمة في أنماط التصميم ومبادئ SOLID — أنماط التصميم (Design Patterns) بالعربي
مقدمة في أنماط التصميم ومبادئ SOLIDأنماط التصميم (Design Patterns) بالعربي · The Code Fix

📚 لمزيد من التعمّق في أنماط التصميم (Design Patterns)، راجِع البرمجة الكائنية على ويكيبيديا.

هل كان هذا الدرس مفيدًا؟