@override
void work() {
print('التجميع الآلي...');
}
}
تم فصل الواجهات لتناسب احتياجات كل كلاس.
_____
5. Dependency Inversion Principle (DIP) - مبدأ عكس الاعتماديات
يجب أن تعتمد الكلاسات على التجريدات وليس على الكلاسات المحددة.
❌ استخدام خاطئ:
class EmailService {
void sendEmail(String email) {
print('إرسال بريد إلكتروني إلى: $email');
}
}
class NotificationManager {
final EmailService emailService = EmailService();
void notifyUser(String email) {
emailService.sendEmail(email);
}
}
هنا، NotificationManager يعتمد على EmailService بشكل مباشر.
✅ استخدام صحيح:
abstract class NotificationService {
void send(String message);
}
class EmailService implements NotificationService {
@override
void send(String message) {
print('إرسال بريد إلكتروني: $message');
}
}
class NotificationManager {
final NotificationService notificationService;
NotificationManager(this.notificationService);
void notifyUser(String message) {
notificationService.send(message);
}
}
الآن، NotificationManager يعتمد على واجهة NotificationService، مما يتيح استبدال EmailService بأي خدمة إشعارات أخرى.
____
باتباع مبادئ SOLID، يمكننا كتابة كود نظيف وسهل الصيانة في Flutter باستخدام Dart. تعمل هذه المبادئ على تقليل التعقيد، وتحسين قابلية إعادة الاستخدام، وتسهيل إضافة الميزات الجديدة دون التأثير على الكود الموجود.
https://t.me/LearnFlutter2022