freeCodeCamp/guide/arabic/software-engineering/design-patterns/index.md

4.5 KiB

title localeTitle
Design Patterns أنماط التصميم

أنماط التصميم

يستخدم المبرمجون ومهندسو البرمجيات أنماطًا للتصميم لحل المشكلات الشائعة والمتكررة في بنية البرامج. توفر الأنماط منهجًا لاغيا لغويا للبرامج الموجهة للكائنات التي تساعد المطورين على اتباع مبادئ التصميم الجيد للتطبيق.

لماذا تصميم الأنماط؟

يوفر تطوير أنماط التصميم العديد من المزايا:

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

استخدام أنماط التصميم يتطلب بعض المقايضات ، ويجب على مطوري البرامج الجدد أن يتذكروا ما يلي:

  • لا توجد رصاصات فضية في البرمجة ، وأنماط التصميم ليست استثناء
  • وتضيف أنماط التصميم طبقة من التجريد إلى الشفرة ، مما يزيد من التصميم الأولي والجهد الإنمائي
  • إن الإفراط في استخدام أنماط التصميم أو إجبارها على ملاءمتها يجعل من الصعب فهم الشفرة

دعم اللغة

نشأت أنماط التصميم من عالم اللغات المكتوبة بشكل ثابت مثل C ++ و Java و C #. تعتمد معظم الموارد حول التطوير حسب نمط التصميم على واحدة من هذه اللغات.

ومع ذلك ، فإن أنماط التصميم هي فقط: الأنماط. فهي ليست تطبيقات ، مثل الطبقات أو الواجهات ، وليست مقيدة لأي لغة واحدة .

عندما تتعلم أنماط التصميم داخل لغة ديناميكية ، إذا بدت أنماط معينة معقدة بدون داع أو غير بديهية ، تذكر أصولها. لا يزال بإمكان المطورين في اللغات الديناميكية استخدام أنماط التصميم التالية والاستفادة منها ، على الرغم من أنه قد يلزم المزيد من الأبحاث لفهمها بشكل كامل.

الاستخدامات

أنماط التصميم ممتازة في حل مشاكل الترميز الأساسية بطريقة بسيطة ومتكررة. على نطاق واسع ، تنقسم إلى ثلاث فئات:

  • الأنماط الإبداعية تصف كيفية إنشاء كائنات جديدة
  • تصف الأنماط الهيكلية كيفية إنشاء الكائنات خارج الكائنات الأخرى
  • الأنماط السلوكية تصف كيف تتواصل الكائنات مع بعضها البعض

يمكن تنفيذ هذه المهام بدون أنماط تصميم ، ولكن أنماط التصميم تقلل من مخاطر أنك ستنتهك الممارسات الجيدة وإنشاء كود يصعب الحفاظ عليه.

معلومات اكثر: