ليه تستخدم Interfaces في الـ OOP

x32x01
  • بواسطة x32x01 ||
في برمجة الكائنات (OOP)، الـ Interfaces أداة مهمة جدًا لتنظيم الكود وضمان تطبيق بعض الـ methods في الكلاسات المختلفة بطريقة مرتبة وواضحة.

خلينا ندي مثال عملي يوضح فايدتها:

تخيل عندك نظام بيسمحلك تنشر عليه 3 حاجات:
services خدمات
articles مقالات
products منتجات

هنمثل ده في الـ OOP ازاي؟

1. إنشاء الكلاس الأساسي​

هنعمل class أساسي اسمه Post، ويحتوي على 3 methods أساسية:
Code:
add()
edit()
show()

2. إنشاء الكلاسات الخاصة​

بعد كده، هنعمل 3 كلاسز تانية للمنتجات والمقالات والخدمات:
Code:
class Product extends Post {}
class Article extends Post {}
class Service extends Post {}
دلوقتي كل كلاس منهم هيبقى فيه تلقائي الـ 3 methods: add(), edit(), show()

لو مش فاهم لحد هنا، نصيحتي ترجع تراجع مفهوم Inheritance في الـ OOP.

3. إضافة ميثود جديدة لبعض الكلاسات​

دلوقتي قررنا نضيف ميثود جديدة للكلاسات Article و Product وهي:
delete()

لو حاولنا نزودها في الكلاس الأساسي Post، هيظهر عندنا مشكلة: لأن كلاس Service هيبقى عنده نفس الميثود delete() بالرغم من إنه مش محتاجها.

4. الحل باستخدام Interface​

الحل الأمثل هنا هو عمل Interface باسم Deletable، ونخلي فيها الميثود:
delete()

وأي كلاس محتاج يكون فيه ميثود delete() يعمل implement للـ Interface ده.
PHP:
class Article extends Post implements Deletable {
    public function delete() {
        // logic here
    }
}

class Product extends Post implements Deletable {
    public function delete() {
        // logic here
    }
}

5. فايدة الـ Interface​

  • تضمن أن كل الكلاسات اللي بتستخدم الـ Interface هتحتوي على نفس الميثود بنفس الاسم ونفس الـ response data type.
  • تسهّل كتابة لوجيك مشروط على أساس وجود Interface معين في الكلاس.
  • تجعل الكود مرتب ومرن للتطوير لاحقًا بدون مشاكل في الوراثة (Inheritance).
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
601
x32x01
x32x01
x32x01
الردود
0
المشاهدات
1K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
711
x32x01
x32x01
x32x01
الردود
0
المشاهدات
661
x32x01
x32x01
x32x01
الردود
0
المشاهدات
352
x32x01
x32x01
x32x01
الردود
0
المشاهدات
424
x32x01
x32x01
x32x01
  • x32x01
الردود
0
المشاهدات
655
x32x01
x32x01
x32x01
الردود
0
المشاهدات
495
x32x01
x32x01
x32x01
الردود
0
المشاهدات
434
x32x01
x32x01
x32x01
  • x32x01
الردود
0
المشاهدات
427
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,831
المشاركات
2,028
أعضاء أكتب كود
464
أخر عضو
رشن7
عودة
أعلى