مدونة انس

شارك الغير بما تعرفه، حتى تتمكن من التقدم

مقدمة الى نماذج التصميم "Design Patterne" في البرمجة

السلام عليكم و رحمة الله.

 

سنتطرق اليوم الى احد المواضيع الشائعة الاستعمال في البرمجة : نماذج التصميم1

 

كمبرج ، تعتبر التحديات البرمجية شيئا يتردد بكثرة في كل المشاريع. فكم من مرة، تواجهك مشكلة تعاني الكثير من اجل حلها، و قد تخرج في نهاية المطاف بحل عبقري، مرن و قوي، فتردد في نفسك "من مثلي في البرمجة هادئ".

لكن، في غمرة الفرح و الغرور ، ياتي صديق لك، (و بما انك مبرمج فلا بد من أن يكون كل اصدقاءك من المبرمجين) ثم يخوض في الحديث عن احد المشاكل التي واجهته في مشروعه، و يبدأ في مدح عبقريته، التي مكنته من ايجاد حل رائع...لكن ما ان يبدأ في شرح الحل الذي توصل اليه، حتى يصيبك الاحباط ، لأن ما يتكلم عنه صديقك، هو نفس الحل الذي كنت قد ظننت انك انت العبقري الذي اخترعه. في قمة الاحباط، تقوم بالبحث عن مشكل مشابه لمشكلتك في الانترنت، فيخبرك العم غوغل بان هناك اشخاصا قد و جدو نفس الحل منذ زمن طويل...فتقرر في النهاية ان تنتحر...

 

نتوقف هنا، لنستعمل اشهر اختصارات لوحت المفاتيح : ctrl+z

 

حسنا، المبرمج العبقري لم ينتحر، لكنه يريد معرفة ما الذي حدث.

 

اغلب المشاريع، تحتوي على تحديات، مشتركة فيما بينها، مما جعل الكثير من المبرمجين يواجهون نفس التحديات، و يقدمون حلولا متشابهة. ثم قام هؤلاء المبرمجون، باستغلال الميزات الموجودة في كل حل، ثم ادراجها في حل واحد "شبه مثالي" للتحدي الذي يواجهونه. و بكثرة التحديات، كثرة هذه الحلول.

الان و قد وجدت الحلول، اطلق المبرمجون عليها مصطلح   "نماذج التصميم".

 

 

 

الفائدة2 من هذه النماذج :

- ربح الوقت ، الذي يهدر عادة في التخمين و حل المشاكل "المتكررة".

- زيادة فعالية البرنامج، لان هذه النماذج مصممة بطريقة فعالة و مرنة، و مجربة من طرف الاف المبرمجين في مئات الالاف من البرامج.

- هذه النماذج مصممة لتكون قابلة لاعادة الاستعمال (Reusability).

- توحيد المصطلحات بين المبرمجين، في مثالنا السابق، لو عرف العبقريان اسماء النماذج ، لما اضاعو الوقت في شرحها، كان يكفي ذكر اسم نموذج "الحل" حتى يعرف كل منهما عما يتحدث عنه الاخر.

 

الان، و قد ازلنا الغموض (باذن الله) عن هذه العبارة الغريبة ، سنذكر بعض اسماء بعض نماذج التصميم :

 

- الكائن الوحيد (Singelton).

- مستودع الكائنات (Objects pool).

- الحالات (States).

- مصنع الكائنات (Objects Factory).

 

 

سأحاول ، باذن الله التطرق الى بعض هذه النماذج لاحقا.

لقد انتهى درس اليوم، اتمنى ان يكون مفيدا.

و السلام عليكم و رحمة الله.

 


1- الترجمة مقتبسة من اقتراح تم طرحه في الشبكة العربية لمطوري الالعاب من طرف الاستاذ وسام . تم اقتراح مصطلح اخر و هو "الانماط البرمجية المجربة". لمزيد من المعلومات زورو موقع الشبكة.

2- نماذج التصميم، لا تقوم بمعجزات، هي مجرد حلول مقترح، و مقبولة عند عامة المبرمجين، تقدم عدة فوائد تم ذكر بعضها في المقال.

 

مصادر :

كتاب : Design Patterns (en) – Elements of Reusable Object-Oriented Software

 

أضف تعليقاً

Loading