Design Patterns - Intro



 يعني ايه design pattern  ؟

ببساطة الـ design patterns هي ناتج التطور التطبيعي لتاريخ البرمجيات , ازاي ؟  نجيب الموضوع من الاول , مع بداية ظهور البرمجيات كانت بتتكتب بطريقة sequential  بمعني إنك بتكتب البرنامج بتاعك كله عبارة عن مجموعة سطور من الـ code  تحت بعضها بتتنفذ بالترتيب و دي كان اسمها الـ sequential programming.

بعد فترة  ومع  وزيادة احجام البرامج بدأوا يلاقوا ان الكود بيتكرر كتير فده وصلهم انهم ممكن يجمعوا الأكواد اللي بتتكرر دي في مكان واحد وكل ما نحتاجهم نستخدمهم وهنا ظهر مفهوم الـ function  و دي كان اسمها الـ Procedural programming.

ومع ازدهار عصر البرمجيات بطريقة كبيرة وسريعة بدأ يتجه التفكير الي إن ازاي نسهل البرمجة علي المبرمجين بأنها تكون اقرب لطريقة تفكير الإنسان و فالوقت ده ظهر الـ OOP  -  object oriented programming وهو انك بتقسم السوفت وير لمجموعة classes  و بتحدد علاقاتها ببعضها و الـ behavior  بتاعها ودي اقرب حاجه للحياة الطبيعية و طريقة تفكير الانسان قدروا يوصلولها لحد دلوقتي.

لحد هنا كويس , طبيعي وانت شغال كـ software engineer  بتواجهك مشاكل وبتفكرلها في حلول وبتحلها , ومع الوقت في مجموعة مشاكل بقت بتتكرر مع ناس كتير وبقت مشاكل مشتركة , وبدأ المبرمجين يعملولها طرق حلول (patterns) ويطوروا طرق الحلول دي وتبقي  طرق موحدة بتسهل عليك حل مشاكل معينة بعينها لما تقابلك (وهتقابلك) وهي دي الـ design patterns.
فهي ببساطة مجموعة حلول لمشاكل common  هتقابلك بطريقة متكررة وانت شغال. بس لازم يكون واضح انها مش أكواد او حاجه تتحول لكود هي مجموعة خطوات لحل مشكلة معينة , انت بترجمها لكود بعد كده ( بس احنا هيكون معانا امثلة بالأكواد للتوضيح).

ايه الفايدة اللي هتعود عليا لما استخدم الـ design patterns  ؟

لما تستخدم الـ design patterns  هتعمل اغلب الـ best practices  اللي تخليك professional software engineer زي:

  •        هتلاقي نفسك بتكتب كود اقل بكتير Less code
  •        هتلاقي ان الـ software بتاعك سهل تطور وتعدل فيه بأقل مجهود maintainable software
  •        هتلاقي ان قدراتك فالـ problem solving زادت بشكل ملحوظ جدا


دي intro سريعة , كده المفروض تكون عرفت ايه هي الـ design patterns وليه محتاج تستخدمها وهتظهرلك قيمتها اكتر لما ندخل فأول pattern وهي الـ strategy pattern النهاردة بليل.

لو قررت عجبك الموضوع وحابب تكمل مش هتحتاج تكون عارف اكتر من مفاهيم الـ OOP البسيطة , و كل اللي جاي بعد كده هيكون self-contained بمعني انك لو محتاج تعرف pattern بعينها هتقرا موضوعها هي بس وهو هيكون شامل وهيغطي كل الجوانب بطريقة سهلة وبسيطة.





Share on Google Plus

About Ahmed Mabrook

Software engineer. Mobile applications developer,books worm and i write every once in a while.
    Blogger Comment
    Facebook Comment