اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

الdesign patterns أو (أنماط التصميم) هي عبارة عن نمط أو نموذج يُستخدم لحل مشكلة ما شائعة, على سبيل المثال

إن كان لدينا صنف يُسمى duck ولدى هذا الصنف تصرفين أو دالتين أساسيين هما fly و quack

وكان لدينا أنواع من البط فبالتالي سنجعلهم يرثون من الصنف duck, ولكن ماذا إن كان لكل نوع من البطducks طريقة مختلفة للطيران fly وإصدار الصوت quack فبالتالي ماذا يمكننا أن نفعل؟ إما أن نقوم بعمل implementation للدالتين fly & quack بداخل كل صنف من الأصناف والذي سيكون أمرُ مرهق وسينشئ إحتمالية أكبر لحدوث الأخطاء البرمجية

ويوجد حل أخر وهو إستخدام النمط strategy design pattern والذي في تلك الحالة أو الموقف يخبرنا أن نقوم بعمل أصناف لأنواع الطيران وإصدار الصوت المختلفة, على سبيل المثال FlyWithWings, FlyWithWings ونجعلهم جميعا يرثون من واجهة interface مشتركة ولنسميها الأن flying, ومن ثم نقوم بإعطاء أصناف البط المختلف خاصية تعبر عن سلوك الطيران flyTechnique ونجعلها من نوع نفس الواجهة التي أنشئناها من قليل flying ومن ثم نقوم بعمل الدالة setFlyTechnique, ونقوم بتكرار الخطوات السابقة مع دالة إصدار الصوت, بهذه الطريقة قمنا بفصل الخواص التي تتغير ووضعناها في أصناف خاصة بها وبالتالي لا يهمنا متى تمت إضافة أو إزالة نوع جديد من البط أو الطيران أو الصوت حيث أننا قمنا بعزل كلٍ منهم عن الأخر

 

  • 1
نشر
بتاريخ On 12/14/2021 at 14:56 قال Kerollos nagy:

هل ممكن شرح بسيط بكود javascript علي design patterns

كما تلاحظ عندما نقوم بإدخال مُعرف غير موجود لا نقوم بإرجاع قيمة null للمُستخدم بل بدلًا من ذلك نقوم بإرجاع الNullPerson وهو عبارة عن كائن من نوع person ولكن له خصائص معينة مثل أن إسمه guest 

يُستخدم هذا النمط عند التعامل مع مصدر للبيانات مثل قاعدة بيانات ويوجد لدينا إحتمالية رجوع قيمة بnull فنستخدم ذلك النمط لنتفادى الأخطاء التي قد تنتج من التعامل مع قيمة بnull

  constructor(id,name) {
     this.id = id
     this.name = name;
   }
 }
 // Null person wrapper
 class NullPerson {
   constructor() {
     this.id = null
     this.name = 'Guest';
   }
 }
 const persons = [
   new Person(1, "sharaf"),
   new Person(2, "ashraf")
 ]
 function findPerson(id) {
   const person = persons.find(person => person.id === id)
   if (person)
     return person
   else
     return new NullPerson()
 }
 let personOne = findPerson(1)
 console.log("Welcome, " + personOne.name)
 let personTwo = findPerson(99)
 console.log("Welcome, " + personTwo.name)

 

  • 0
نشر

تعريف design patterns: 

أنماط التصميم (Design Patterns) هي أساليب نموذجية/فعالة/أفضل حل ممكن تحل المشاكل التي تتكرر كثيرًا في تصميم البرمجيات/طريقة تفاعل مكونات النظام الحاسوبي، ويمكن تشبيهها بالمخططات التي تستخدمها -وتُعدَّلها أيضًا- من أجل إصلاح مشكلة بعينها في شيفرتك.

لها عدة أنواع، تفيد في جميع مجالات علوم الحاسب،

  • أنماط التصميم الإنشائية Creational Design Patterns: كيفية بناء الأغراض البرمجية

  • أنماط التصميم الهيكلية: هيكلة صنف ما بطريقة تحقق تفاعله من أصناف أخرى.

  • أنماط التصميم السلوكية: تعديل سلوم غرض برمجي خلال عمل المشروع

توثيق موسوعة حسوب: أنماط التصميم

مقالة:

 

 

  • 0
نشر
بتاريخ 19 دقائق مضت قال شرف الدين2:

الdesign patterns أو (أنماط التصميم) هي عبارة عن نمط أو نموذج يُستخدم لحل مشكلة ما شائعة, على سبيل المثال

إن كان لدينا صنف يُسمى duck ولدى هذا الصنف تصرفين أو دالتين أساسيين هما fly و quack

وكان لدينا أنواع من البط فبالتالي سنجعلهم يرثون من الصنف duck, ولكن ماذا إن كان لكل نوع من البطducks طريقة مختلفة للطيران fly وإصدار الصوت quack فبالتالي ماذا يمكننا أن نفعل؟ إما أن نقوم بعمل implementation للدالتين fly & quack بداخل كل صنف من الأصناف والذي سيكون أمرُ مرهق وسينشئ إحتمالية أكبر لحدوث الأخطاء البرمجية

ويوجد حل أخر وهو إستخدام النمط strategy design pattern والذي في تلك الحالة أو الموقف يخبرنا أن نقوم بعمل أصناف لأنواع الطيران وإصدار الصوت المختلفة, على سبيل المثال FlyWithWings, FlyWithWings ونجعلهم جميعا يرثون من واجهة interface مشتركة ولنسميها الأن flying, ومن ثم نقوم بإعطاء أصناف البط المختلف خاصية تعبر عن سلوك الطيران flyTechnique ونجعلها من نوع نفس الواجهة التي أنشئناها من قليل flying ومن ثم نقوم بعمل الدالة setFlyTechnique, ونقوم بتكرار الخطوات السابقة مع دالة إصدار الصوت, بهذه الطريقة قمنا بفصل الخواص التي تتغير ووضعناها في أصناف خاصة بها وبالتالي لا يهمنا متى تمت إضافة أو إزالة نوع جديد من البط أو الطيران أو الصوت حيث أننا قمنا بعزل كلٍ منهم عن الأخر

 

هل ممكن شرح بسيط بكود javascript كود واحد فقط

  • 0
نشر

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

تعتبر أنماط التصميم سهلة التعديل وسهلة الاختبار ومن أشهرها  MVC و MVVM و  Singleton وغيرها من أنماط التصميم .

  • هناك أنواع متعلقة بإنشاء الكلاس  
  1. نمط  Singleton 
  2. نمط  Builder 
  3. نمط  Prototype
  4. نمط  Factory Method
  5. نمط  Abstract Factory 
  • أنماط متعلقة بشكل الكلاس وكيفية عمله 
  1. نمط  Adapter
  2. نمط  Composite
  3. نمط  Facade
  4. نمط   Bridge
  5. نمط  Decorator
  6. نمط  Proxy
  7. نمط  Flyweight
  • أنماط متعلقة بسلوك الكائنات : هذه الأنماط  تتعلق بكيفية التواصل بين الكائنات بشكل منفصل 
  1. نمط  Mediator
  2. نمط  Observer
  3. نمط   Null Object 
  4. نمط   Memento 
  5. نمط   State
  6. نمط   Visitor
  7. وهناك أنماط أخرى
  • في هذا النمط  MVC 
  1. Model :  يحتوى على البيانات .
  2. view :  عرض المعلومات للمستخدم.
  3. controller : يعالج البيانات التي تأتي من المستخدم. 
  • 0
نشر
بتاريخ 2 دقائق مضت قال أسامة زيادة:

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

تعتبر أنماط التصميم سهلة التعديل وسهلة الاختبار ومن أشهرها  MVC و MVVM و  Singleton وغيرها من أنماط التصميم .

  • هناك أنواع متعلقة بإنشاء الكلاس  
  1. نمط  Singleton 
  2. نمط  Builder 
  3. نمط  Prototype
  4. نمط  Factory Method
  5. نمط  Abstract Factory 
  • أنماط متعلقة بشكل الكلاس وكيفية عمله 
  1. نمط  Adapter
  2. نمط  Composite
  3. نمط  Facade
  4. نمط   Bridge
  5. نمط  Decorator
  6. نمط  Proxy
  7. نمط  Flyweight
  • أنماط متعلقة بسلوك الكائنات : هذه الأنماط  تتعلق بكيفية التواصل بين الكائنات بشكل منفصل 
  1. نمط  Mediator
  2. نمط  Observer
  3. نمط   Null Object 
  4. نمط   Memento 
  5. نمط   State
  6. نمط   Visitor
  7. وهناك أنماط أخرى
  • في هذا النمط  MVC 
  1. Model :  يحتوى على البيانات .
  2. view :  عرض المعلومات للمستخدم.
  3. controller : يعالج البيانات التي تأتي من المستخدم. 

هل ممكن شرح بسيط بكود javascript علي design patterns

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...