النمط الأول:نمط الورقة الوحيدة Singleton

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

2 Responses to “النمط الأول:نمط الورقة الوحيدة Singleton”

  1. الصليحي قال:

    مدونه جميلة ومواضيع جميلة جدا..
    عندي كم نقطة احتاج فيها للتوضيح:
    غالبا في حالة الوراثة المتعددة تختلف الباراميترز الخاصة بالبناء لكل كائن، هل بالامكان حل المشكلة من خلال عدة بنائين public بحيث يكونوا overloaded ويقرر الكومبايلر اي بناء يختار.
    النقطة الاخرى هل تسمح كل اللغات بان يكون البناء private? وما هو المغزى من جعل البناء private في حالة عدد معين من الكائنات؟ هل من الممكن القيام بنفس العملية من بناء public مادام باستطاعته استدعاء الـ destructor؟

  2. admin قال:

    لا مشاكل في وجود أكثر من بناء public
    لكن البنائين الأقل في عدد المدخلات من البناء الأصل
    (بمعنى آخر البناء الذي يدعم عملية الوراثة الوحيدة)
    هؤلاء يجب أن يكونوا private
    بالنسبة لكون البناء private تمنع إنشاء أي كائنات عن طريقه
    لذلك سيضطر من يريد كائن أن يتوجه إلى الدالة التي تعمل بديلاً عنه
    بهذا تضمن أنت أن الكائنات لن تبنى غير بشروطك
    صراحة ليس لي علم بموضوع destructor
    أتمنى أن أكون أجبت تساؤلاتك
    تحياتي
    م.علاء

Leave a Reply