الرئيسيةعريقبحث

أنماط إبداعية


☰ جدول المحتويات


في هندسة البرمجيات ، تصميم أنماط خلاقة(ابداعية) (creational design patterns)‏ هي أنماط التصميم design patterns التي تتعامل مع ألية إنشاء كائن، في محاولة لإنشاء كائنات بطريقة مناسبة لهذا الوضع. يمكن أن يؤدي الشكل الأساسي لإنشاء الكائن إلى مشكلات في التصميم أو تعقيد إضافي للتصميم. تحل أنماط التصميم الإبداعي هذه المشكلة عن طريق التحكم بطريقة ما في إنشاء هذا الكائن.

تتكون أنماط التصميم الإبداعي من فكرتين مهيمنتين. الأول هو تغليف(encapsulating )‏المعرفة حول الاصناف الملموسة التي يستخدمها النظام. الآخر وهو إخفاءhiding كيفية إنشاء ودمجcreational design (combined )‏أمثلة(instances)‏ هذه اصناف الملموسة(concrete classes)‏. [1]

يتم تصنيف أنماط التصميم الإبداعي أيضًا إلى أنماط إنشاء الكائنات object-creational patterns وأنماط إنشاء الصنفClass-creational patterns ، حيث تتعامل أنماط إنشاء الكائنات مع إنشاء الكائنات وتتعامل أنماط إنشاء الصنف مع إنشاء مثيل للصنف Class-instantiation. بتفاصيل أكبر، تؤجل أنماط إنشاء الكائنات جزءًا من إنشاء الكائن الخاص بها إلى كائن آخر، بينما تؤجل أنماط إنشاء الصنف إلى إنشاء اصناف الفرعية. [2]

خمسة أنماط تصميم معروفة هي جزء من الأنماط الإبداعية هي

  • نمط المصنع المجرد(Abstract factory pattern)‏ ، الذي يوفر واجهة لإنشاء كائنات مرتبطة أو تابعة دون تحديد اصناف المحدد للكائناتobjects' concrete classes. [3]
  • نمط البناء Builder pattern، الذي يفصل بناء كائن معقد عن تمثيله بحيث يمكن لعملية البناء نفسها إنشاء تمثيلات مختلفة.
  • نمط طريقة المصنع Factory method pattern، والذي يسمح للصنف بتأجيل الاستنساخinstantiation إلى اصناف الفرعيةsubclasses. [4]
  • نمط النموذج الأوليPrototype pattern ، الذي يحدد نوع الكائن المراد إنشاؤه باستخدام مثيل نموذجيprototypical instance ، ويخلق كائنات جديدة عن طريق استنساخ هذا النموذج الأولي.
  • نمط Singleton ، الذي يضمن أن الصنف لديه مثيل واحد فقط، ويوفر نقطة وصول عالمية إليهglobal point of access. [5]

تعريف

تهدف الأنماط الإبداعية إلى فصل النظام عن كيفية إنشاء وتأليف وتمثيل كائناته. إنها تزيد من مرونة النظام من حيث ماذا، من، وكيف، ومتى يتم إنشاء الكائن. [6]

الاستخدام

نظرًا لأن هندسة البرمجيات الحديثة تعتمد على تكوينcomposition الكائن أكثر من وراثة الصنفوفclass inheritance ، فإن التركيز يتحول بعيدًا عن سلوكيات التشفير الثابتhard-coding نحو تحديد مجموعة أصغر من السلوكيات الأساسية التي يمكن أن تتكون في سلوكيات أكثر تعقيدًا. [7] سلوكيات الترميز الصلب Hard-coding غير مرنة لأنها تتطلب تجاوزoverriding أو إعادة تنفيذ re-implementingكل شيء من أجل تغيير أجزاء من التصميم. بالإضافة إلى ذلك، لا يشجع الترميز الثابت على إعادة الاستخدام ويجعل من الصعب تتبع الأخطاء. لهذه الأسباب، تكون الأنماط الإبداعية أكثر فائدة من سلوكيات الترميز الثابت. الأنماط الإبداعية تجعل التصميم أكثر مرونة. توفر طرقًا مختلفة لإزالة المراجع الصريحةexplicit references في الاصناف الملموسة من الشفرةcode التي تحتاج إلى نسخهاinstantiate . [8] وبعبارة أخرى، فإنها تخلق الاستقلالية للكائنات واصناف.

ضع في اعتبارك تطبيق الأنماط الإبداعية عندما:

  • يجب أن يكون النظام مستقلاً عن كيفية إنشاء كائناته ومنتجاته(products )‏.
  • تم تصميم مجموعة من الكائنات ذات الصلة لاستخدامها معًا.
  • إخفاء تطبيقات مكتبة صنف(class library)‏ أو منتج (product )‏، والكشف عن واجهاتهم(interfaces)‏ فقط.
  • بناء (Constructing )‏تمثيل(representation )‏مختلف للكائنات المعقدة المستقلة.
  • يريد الصنف أن يقوم الصنف الفرعي بتنفيذ(implement )‏الكائن الذي تقوم بإنشائه.
  • يتم تحديد عمليات إنشاء الصنف(instantiations)‏ في وقت التشغيل(run-time)‏.
  • يجب أن يكون هناك مثيل واحsingle instanceد ويمكن للعميل الوصول إلى هذا المثيل instance في جميع الأوقات.
  • يجب أن يكون المثالInstance قابلاً للتوسيع (extensible )‏دون تعديل(modified)‏.

بناء

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

المشاركون Participants:

  • الُمشأ(Creator)‏: يعلن(Declares)‏ عن واجهةinterface الكائن. إرجاع(Returns )‏الكائن.
  • (ConcreteCreator)‏ : ينفذ(Implements )‏واجهة(interface )‏الكائن.

أمثلة

تتضمن بعض أمثلة أنماط التصميم الإبداعي ما يلي:

  • نمط (Factory Abstract)‏ : يطلب الصنف الكائنات التي يتطلبها من كائن المصنع بدلاً من إنشاء الكائنات مباشرة
  • نمط طريقة المصنع(Factory method pattern)‏: : مركزة إنشاء كائن من نوع معين باختيار واحد من عدة تطبيقات
  • نمط الباني : فصل بناءconstruction كائن معقد عن تمثيله(representation)‏ بحيث يمكن لعملية البناء نفسها أن تُنشأ تمثيلاتrepresentations مختلفة
  • نمط حقن التبعية(Dependency Injection pattern)‏ : الصنف يقبل الكائنات التي تتطلبهاrequires من حاقن بدلاً من إنشاء الكائنات مباشرة
  • نمط التهيئة البطيء(Lazy initialization pattern)‏ : أسلوب تأخير إنشاء كائن، أو حساب قيمة، أو عملية مكلفة أخرى حتى المرة الأولى اللازمة
  • نمط تجمع الكائناتObject pool pattern : تجنب الحصول على الموارد وتحريرها بشكل مكلف عن طريق إعادة تدوير الكائنات التي لم تعد مستخدمة
  • نمط النموذج الأولي Prototype pattern: يستخدم عندما يتم تحديد نوع الكائنات التي يتم إنشاؤها بواسطة مثيل نموذجي(prototypical )‏ ، يتم استنساخه لإنتاج كائنات جديدة
  • نمط Singleton : قصر نسخ صنف على كائن واحد

مقالات ذات صلة

المراجع

  1. Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns. Massachusetts: Addison-Wesley. صفحة 81.  . مؤرشف من الأصل في 18 مايو 202022 مايو 2015.
  2. Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns. Massachusetts: Addison-Wesley.  . مؤرشف من الأصل في 26 مارس 202022 مايو 2015.
  3. Freeman, Eric; Freeman, Elisabeth; Sierra, Kathy; Bates, Bert (2004). Hendrickson; Loukides, Mike (المحررون). Head First Design Patterns. California: O'Reilly Media. صفحة 156.  . مؤرشف من الأصل في 30 أبريل 202022 مايو 2015.
  4. Freeman, Eric; Freeman, Elisabeth; Sierra, Kathy; Bates, Bert (2004). Hendrickson; Loukides, Mike (المحررون). Head First Design Patterns. California: O'Reilly Media. صفحة 134.  . مؤرشف من الأصل في 30 أبريل 202022 مايو 2015.
  5. Freeman, Eric; Freeman, Elisabeth; Sierra, Kathy; Bates, Bert (2004). Hendrickson; Loukides, Mike (المحررون). Head First Design Patterns. California: O'Reilly Media. صفحة 177.  . مؤرشف من الأصل في 30 أبريل 202022 مايو 2015.
  6. Judith, Bishop (2007). C# 3.0 Design Patterns. California: O'Reilly Media. صفحة 336.  . مؤرشف من الأصل في 18 مايو 202022 مايو 2015.
  7. Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns. Massachusetts: Addison-Wesley. صفحة 84.  . مؤرشف من الأصل في 18 مايو 202022 مايو 2015.
  8. Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1995). Design Patterns. Massachusetts: Addison-Wesley. صفحة 85.  . مؤرشف من الأصل في 18 مايو 202022 مايو 2015.

موسوعات ذات صلة :