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

x32x01
  • بواسطة x32x01 ||
  • #1
في برمجة الكائنات (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
الردود
1
المشاهدات
778
x32x01
x32x01
x32x01
الردود
0
المشاهدات
944
x32x01
x32x01
x32x01
الردود
0
المشاهدات
798
x32x01
x32x01
x32x01
الردود
0
المشاهدات
2K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
153
x32x01
x32x01
الوسوم : الوسوم
abstraction clean code inheritance interfaces loose coupling oop php oop polymorphism software design solid principles
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟

آخر المشاركات

إحصائيات المنتدى
المواضيع
2,388
المشاركات
2,601
أعضاء أكتب كود
574
أخر عضو
الياس
عودة
أعلى