كلما كانت اجزاء البرنامج منفصلة عن بعضها كلما عاش معنا اكثر حيث تسهل صيانته و تطويره و اختباره . ذكرت في سلاسل سابقة اهمية مباديء SOLID في برمجة الـOOP. و سأركز هنا على اخر مبدأين الـI و D. و قليل عن الIoC و الـDI.
لكن هناك مقدمات مهمة لفهم الصورة كاملة. ( سلسلة )
1.عندما نقول عن SOLID أنها مباديء Principles. فهذا يعني انها شيء يشبه الأخلاق التي علينا ان نتبناها عند تصميم الClasses. فليس بالضرورة أن تأتي بتفاصيل او ارشادات عن كيفية تمثيلها , الكيفية تأتي بها الDesign Patterns.
2.لاحظ أن اول مبدأ في SOLID هو الSingle Responsibility أي ان الكلاس عليه أن يكون مسؤولاً عن شيء واحدة فقط و قد يكون لهذه المسؤولية عدة مهام , فكثرة الmethods ليس بالضرورة تعني كثرة الResponsibility بل ما الذي يقوم به الميثود.
3.مثلاً قد يكون لدينا ميثود Save في كلاس Student لحفظ بيانات الObject و نحتاج إلى حفظها في قاعدة بيانات و تسجيل Log بالحدث. التعامل مع قاعدة البيانات و الLog هذه مسؤولية Class اخر, نحن هنا علينا أن نحفظ الstate فقط في الذاكرة.
4.لو قلنا مثلاً سننشيء كلاس خاص بحفظ في قاعدة البيانات و نناديه من كلاسنا الحالي فنحن هنا ايضاً كسرنا مبدأ SRP لاننا جعلنا كلاسنا متحكم في سير البرنامج من كلاس إلى اخر و هذه مسؤولية Responsibility أخرى!. هذا بالإضافة انه كسر كامل لمبدأ الDIP