EP23 - Ask Developer Hangout - Week 23 - Object Oriented Design Patterns
Chapters
- مقدمة: الأسبوع 23 وأنماط التصميم
- لماذا ظهرت Design Patterns وحدود اللغات
- تاريخ الأنماط وكتاب Gang of Four
- تصنيفات الأنماط ومرجع Refactoring Guru
- Adapter Pattern وتحويل الواجهات
- Singleton ومشكلات التزامن والاختبار
- MVC: فصل Model وView وController
- MVVM وView Model للواجهات
- AutoMapper وتطبيق Adapter في .NET
- Iterator ودعم اللغات للحلقات
- Decorator Pattern وتركيب الـStreams
- Abstract Factory لعائلات قواعد البيانات
- كيف تتعلم Design Patterns دون تعقيد
- الأنماط كأدوات ولغة مشتركة للفريق
- خلاصة اللقاء ومصادر للتعلم
About this episode
في اللقاء الأسبوعي الثالث والعشرين من اسأل مطور، يناقش محمد الشريف وياسر مكرم أنماط التصميم كحلول متكررة قابلة للتكييف، لا كقوالب إلزامية. يشرحان كيف تمنح الأنماط فرق التطوير مفردات مشتركة لفهم التصميم، وكيف انتقلت بعض الأفكار التي عالجتها الأنماط إلى دعم مباشر في لغات أحدث. يتناول اللقاء Singleton وتعقيدات التزامن وصعوبة اختباره، وAdapter لربط نماذج وواجهات غير متوافقة، وMVC وMVVM لفصل العرض عن البيانات والمنطق، إلى جانب Iterator وObserver وDecorator وAbstract Factory. كما يفرّقان بين النمط نفسه والأدوات التي تطبّق فكرته، ويحذّران من إجبار المشكلة على نمط لمجرد استخدامه، لأن ذلك قد يزيد التعقيد بدل أن يحلّه.
Discussion highlights
- أنماط التصميم أدلة لحلول مشاكل متكررة وليست وصفات جامدة؛ ينبغي تكييفها مع السياق، وقد يكون الحل الأبسط أفضل أحياناً.
- Singleton يضمن مثيلاً واحداً، لكن تنفيذه في بيئات متعددة الخيوط يحتاج إلى معالجة التزامن، وقد يصعّب الاختبارات عندما يلزم استبدال الاعتماد الحقيقي ببديل وهمي مثل logger.
- Adapter يفصل النظام عن اختلاف الواجهات أو نماذج البيانات؛ يضرب المتحدثون مثال تحويل firstName وlastName إلى fullName، أو birthDate إلى age عند التكامل مع نظام آخر.
- في MVC يحمل الـController منطق تفاعل الواجهة، بينما يركز الـView على العرض؛ أما MVVM فيقدّم ViewModel يحوي فقط البيانات المناسبة للواجهة، ما قد يقلل البيانات المنقولة إلى العميل.
- يوضح Abstract Factory كيفية التعامل مع عائلات من الكائنات، مثل موفري قواعد بيانات مختلفين، عبر واجهات مشتركة وعزل تفاصيل الإنشاء عن بقية الكود.
Links & resources
- رابط لقاء Object Oriented السابق:www.youtube.com
- رابط اللقاء على يوتيوب:www.youtube.com



