علم الأنماط من العلوم المهمة في هندسة البرمجيات
يمكن تعريفه على أنه بعض الحلول الكائنية لمشاكل قد تواجه المبرمج في أي وقت كان من عمله
في هذه السلسلة أحاول أن أضع النمط في إطار سهل بسيط
بسم الله نبدأ مع نمط الورقة الوحيدة Singleton
هذا النمط يعد من أبسط الحلول التي يقدمها علم تصميم الأنماط Design Patterns
مع بساطته إلا أنه يحل الكثير من المشاكل التي قد تواجه المبرمج
أشهر هذه المشاكل
1-الوراثة المتعددة
في بعض اللغات التي لا تدعم هذا النوع من الوراثة
يعد Singleton أحد الحلول المطروحة
2-الاقتصار على عدد معين من الكائنات لفئة معينة في أثناء التشغيل
بكل بساطة يجب أن تقوم بجعل صانع الكائنات constractot في فئتك خاص private
( على فكرة آخرة مرة أكتب فيها constratur في مقالاتي أظن أن لفظة صانع الكائنات أو البناء كافية إلى حد ما )
بهذا تكون أنهيت عمل النمط لكن كيف تقوم بحل المشاكل من خلاله
في عملية الوراثة المتعددة
قم بجعل أي صانع كائنات في فئتك خاص
قم بكتابة صانع كائنات آخر واجعله عام public واجعل المعاملات parameter المدخلة له هي الفئات التي تريد وراثتها
قم بتخزين الكائنات من هذه الفئات وبهذا تكون حصلت على حل للوراثة المتعددة
بالنسبة لعملية ضمان عدد معين من الكائنات
قم بجعل كل البنائين في فئتك مختصين بنفس الفئة private
قم بكتابة إجراء method يقوم ببناء كائن إذا كان عدد الكائنات أقل من المطلوب
إذا وصل عدد الكائنات إلى الحد المسموح فاجعل هذا الإجراء يرجع إحدى قيمتين:
1-null
2-يرجع قيمة أي عنصر من العناصر التي قمت بإنشائها
مدونه جميلة ومواضيع جميلة جدا..
عندي كم نقطة احتاج فيها للتوضيح:
غالبا في حالة الوراثة المتعددة تختلف الباراميترز الخاصة بالبناء لكل كائن، هل بالامكان حل المشكلة من خلال عدة بنائين public بحيث يكونوا overloaded ويقرر الكومبايلر اي بناء يختار.
النقطة الاخرى هل تسمح كل اللغات بان يكون البناء private? وما هو المغزى من جعل البناء private في حالة عدد معين من الكائنات؟ هل من الممكن القيام بنفس العملية من بناء public مادام باستطاعته استدعاء الـ destructor؟
لا مشاكل في وجود أكثر من بناء public
لكن البنائين الأقل في عدد المدخلات من البناء الأصل
(بمعنى آخر البناء الذي يدعم عملية الوراثة الوحيدة)
هؤلاء يجب أن يكونوا private
بالنسبة لكون البناء private تمنع إنشاء أي كائنات عن طريقه
لذلك سيضطر من يريد كائن أن يتوجه إلى الدالة التي تعمل بديلاً عنه
بهذا تضمن أنت أن الكائنات لن تبنى غير بشروطك
صراحة ليس لي علم بموضوع destructor
أتمنى أن أكون أجبت تساؤلاتك
تحياتي
م.علاء