سؤال

مرحبًا ، مرحبًا ، أريد أن يكون الحد الأقصى لإنشاء الكائن يعني أن الفصل يمكن أن يكون على الأكثر 4 كائنات لا يزيد عن كيفية تحقيق ذلك؟

هل كانت مفيدة؟

المحلول

نهج واحد هو استخدام مصنع كائن يخلق في أكثر من 4 حالات. إنها حاجة مثيرة للاهتمام ... هل يخدم تجمع الكائن نفس الحاجة؟

نصائح أخرى

يمكنك حساب عدد الحالات التي تم إنشاؤها باستخدام خاصية فئة ثابتة لتخزين العد. يمكن القيام بذلك إما في مُنشئ الفصل أو يمكنك الاستفادة من نمط المصنع. من الصعب بعض الشيء الإجابة على هذا بدقة أكثر دون معرفة اللغة المستهدفة.

حاول تعديل المفرد نمط. يمكنك استخدام متغير العد. ستحتاج إلى إبقاء المُنشئ الخاص للسيطرة على لا. من الحالات.

تتمثل إحدى الطرق لتحقيقها في نمط تصميم Singleton ، كلما قمت بإجراء مكالمة لإنشاء مثيل ، تحقق من عدد المثيل الذي تم إنشاؤه بالفعل ، إذا تم الوصول إلى عدد المثيلات بالفعل 4 ، ثم استخدم نفس المثيل لتطبيقك. للحصول على عدد ، إنشاء عداد int ثابت = 0 ؛ والحفاظ على زيادة ذلك للحصول على النتائج.

إن أبسط طريقة للقيام بذلك هي أن يكون لديك سمة مستوى الفصل تسمى "العد" ، وفي مُنشرك ، فقط تأكد من أن "العد" ليس أعلى من رقم معين.

//pseudocode
class foo
  static count = 0

  def constructor()
    if count < 4
      //create object
    else
      //there are too many!

هذا هو رمز قصير قصير سيعطي النتيجة أعلاه في C#

sealed class clsInstance
    {
        public static int count = 0;
        private static readonly clsInstance inst = new clsInstance();
        clsInstance()
        {

        }

        public static clsInstance Inst
        {
            get
            {
                if (count < 4)
                {

                    Console.WriteLine("object : " + count);
                    count++;
                    return inst;
                }
                return null;
            }
        }


    }

   class MainClass
   {
       public static void Main(String[] args)
       {
           clsInstance c1 = clsInstance.Inst;
           clsInstance c2 = clsInstance.Inst;
           clsInstance c3 = clsInstance.Inst;
           clsInstance c4 = clsInstance.Inst;
           Console.ReadLine();
           clsInstance c5 = clsInstance.Inst;
           Console.ReadLine();
       }
   }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top