نمط إبداعي
نمط الإنشاء هو نمط تصميم برمجي يُستخدم لإنشاء الكائنات بطريقة ملائمة لحالة معينة. ولأن إنشاء الكائنات المتاح عادةً (أي عبر لغة البرمجة ) قد يُؤدي أحيانًا إلى قيود في التصميم ، فإن آلية إنشاء مخصصة تُتيح تصميمًا أفضل. يهدف نمط الإنشاء إلى فصل النظام عن كيفية إنشاء كائناته وتكوينها وتمثيلها. كما أنه يزيد من مرونة النظام فيما يتعلق بماذا ومن وكيف ومتى يتم إنشاء الكائنات. [ 1 ]
يُجسّد نمط الإنشاء جانبين رئيسيين. الأول هو تغليف المعرفة المتعلقة بالفئات الملموسة التي يستخدمها النظام. والآخر هو إخفاء كيفية إنشاء مثيلات هذه الفئات الملموسة ودمجها. [ 2 ]
تُصنّف أنماط التصميم الإنشائية إلى أنماط إنشاء الكائنات وأنماط إنشاء الأصناف. تُحيل أنماط إنشاء الكائنات جزءًا من عملية إنشاء الكائن إلى كائن آخر، بينما تُحيل أنماط إنشاء الأصناف عملية إنشاء الكائن إلى الأصناف الفرعية. [ 3 ]
الاستخدام
بما أن هندسة البرمجيات الحديثة تعتمد بشكل أكبر على تركيب الكائنات بدلاً من وراثة الفئات، فإن التركيز يتحول من تضمين السلوكيات بشكل ثابت في الكود إلى تعريف مجموعة أصغر من السلوكيات الأساسية التي يمكن تركيبها لتكوين سلوكيات أكثر تعقيدًا. [ 4 ] تتسم السلوكيات المُضمنة في الكود بعدم المرونة لأنها تتطلب إعادة تعريف أو إعادة تنفيذ الكود بالكامل لتغيير أجزاء من التصميم. إضافةً إلى ذلك، لا يُشجع التضمين الثابت في الكود على إعادة الاستخدام، ويُصعّب تتبع الأخطاء. لهذه الأسباب، تُعد أنماط الإنشاء أكثر فائدة من تضمين السلوكيات بشكل ثابت في الكود. تُضفي أنماط الإنشاء مرونة أكبر على التصميم، إذ تُوفر طرقًا مختلفة لإزالة المراجع الصريحة في الفئات الملموسة من الكود الذي يحتاج إلى إنشاء مثيلاتها. [ 5 ] بعبارة أخرى، تُنشئ أنماط الإنشاء استقلالية للكائنات والفئات.
ضع في اعتبارك تطبيق أنماط الإبداع عندما:
- ينبغي أن يكون النظام مستقلاً عن كيفية إنشاء كائناته ومنتجاته.
- تم تصميم مجموعة من العناصر المترابطة لاستخدامها معًا.
- إخفاء تطبيقات مكتبة فئات أو منتج، والكشف فقط عن واجهاتها.
- بناء تمثيلات مختلفة لأشياء معقدة مستقلة.
- تريد فئة ما أن تقوم فئتها الفرعية بتنفيذ الكائن الذي تقوم بإنشائه.
- يتم تحديد عمليات إنشاء الفئات في وقت التشغيل.
- يجب أن تكون هناك نسخة واحدة فقط، ويمكن للعميل الوصول إلى هذه النسخة في جميع الأوقات.
- يجب أن يكون النموذج قابلاً للتوسيع دون تعديله.
بناء

فيما يلي مخطط فئات بسيط تشترك فيه معظم أنماط الإنشاء. لاحظ أن أنماط الإنشاء المختلفة تتطلب فئات مشاركة إضافية ومختلفة.
مشاركون :
- المُنشئ : يُعلن عن واجهة الكائن. يُعيد الكائن.
- ConcreteCreator : ينفذ واجهة الكائن.
أمثلة
تتضمن بعض الأمثلة على أنماط التصميم الإبداعي ما يلي:
- نمط مصنع تجريدي
- تطلب الفئة الكائنات التي تحتاجها من كائن المصنع بدلاً من إنشاء الكائنات مباشرةً. [ 6 ]
- نمط طريقة المصنع
- مركزية إنشاء كائن من نوع محدد باختيار أحد التطبيقات المتعددة. [ 7 ]
- نمط البناء
- افصل بين بناء كائن معقد وتمثيله بحيث يمكن لعملية البناء نفسها أن تُنتج تمثيلات مختلفة.
- نمط حقن التبعية
- تقبل الفئة الكائنات التي تحتاجها من مُحقِّن بدلاً من إنشاء الكائنات مباشرةً
- نمط التهيئة الكسولة
- تكتيك تأخير إنشاء كائن ما، أو حساب قيمة، أو أي عملية مكلفة أخرى حتى المرة الأولى التي تكون فيها هناك حاجة إليها.
- نمط تجميع الكائنات
- تجنب الحصول على الموارد وإطلاقها بتكلفة باهظة عن طريق إعادة تدوير الأشياء التي لم تعد قيد الاستخدام.
- نموذج أولي
- يتم استخدامها عندما يتم تحديد نوع الكائنات المراد إنشاؤها بواسطة نموذج أولي، والذي يتم استنساخه لإنتاج كائنات جديدة.
- نمط فردي
- [ 8 ] تقييد إنشاء مثيل لفئة ما بكائن واحد.
انظر أيضاً
مراجع
- ↑ جوديث ، بيشوب (2007). أنماط تصميم C# 3.0 . كاليفورنيا: أورايلي ميديا. ص 336. ISBN 978-0-596-52773-0تم الاطلاع عليه بتاريخ 22-05-2015 .
- ↑ غاما، إريك؛ هيلم، ريتشارد؛ جونسون، رالف؛ فليسيدس، جون (1995). أنماط التصميم . ماساتشوستس: أديسون-ويسلي. ص 81. ISBN 978-0-201-63361-0تم الاطلاع عليه بتاريخ 22-05-2015 .
- ↑ غاما، إريك؛ هيلم، ريتشارد؛ جونسون، رالف؛ فليسيدس، جون (1995). أنماط التصميم . ماساتشوستس: أديسون-ويسلي. ISBN 978-0-201-63361-0تم الاطلاع عليه بتاريخ 22-05-2015 .
- ↑ غاما، إريك؛ هيلم، ريتشارد؛ جونسون، رالف؛ فليسيدس، جون (1995). أنماط التصميم . ماساتشوستس: أديسون-ويسلي. ص 84. ISBN 978-0-201-63361-0تم الاطلاع عليه بتاريخ 22-05-2015 .
- ↑ غاما، إريك؛ هيلم، ريتشارد؛ جونسون، رالف؛ فليسيدس، جون (1995). أنماط التصميم . ماساتشوستس: أديسون-ويسلي. ص 85. ISBN 978-0-201-63361-0تم الاطلاع عليه بتاريخ 22-05-2015 .
- ↑ فريمان، إريك؛ فريمان، إليزابيث؛ سييرا، كاثي؛ بيتس، بيرت (2004). هندريكسون، مايك؛ لوكيدس، مايك (محرران). أنماط التصميم من Head First . كاليفورنيا: أورايلي ميديا. ص 156. ISBN 978-0-596-00712-6تم الاطلاع عليه بتاريخ 22-05-2015 .
- ↑ فريمان، إريك؛ فريمان، إليزابيث؛ سييرا، كاثي؛ بيتس، بيرت (2004). هندريكسون، مايك؛ لوكيدس، مايك (محرران). أنماط التصميم من Head First . كاليفورنيا: أورايلي ميديا. ص 134. ISBN 978-0-596-00712-6تم الاطلاع عليه بتاريخ 22-05-2015 .
- ↑ فريمان، إريك؛ فريمان، إليزابيث؛ سييرا، كاثي؛ بيتس، بيرت (2004). هندريكسون، مايك؛ لوكيدس، مايك (محرران). أنماط التصميم من Head First . كاليفورنيا: أورايلي ميديا. ص 177. ISBN 978-0-596-00712-6تم الاطلاع عليه بتاريخ 22-05-2015 .
- أنماط تصميم البرمجيات
