سؤال

في طبقة الوصول إلى البيانات لدينا في العمل، لدينا هذا التنفيذ القياسي حيث يتم الوصول إلى الفصل من خلال خاصية عامة مفردة والتي تبدو كما يلي:

public static CustomerController Instance
        {
            get 
            {
                lock(singletonLock)
                {
                    if( _instance == null )
                    {
                        _instance = new CustomerController();  
                    }
                    return _instance;
                }
            }
        }

الآن، فهمت ما يفعله الكود، لكنني كنت أتساءل لماذا تفعل هذا بدلاً من مجرد إنشاء مثيل للفئة في كل مرة يتم استخدامها؟

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

المحلول

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

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

وهناك الكثير من الأسباب بارد لاستخدام المفرد، لكنني كنت مثلك وليس لديه فكرة عما كانوا FOR حتى ركضت في هذه المسألة مع الوصول إلى الملفات في التطبيق مؤشرات.

نصائح أخرى

وقد ترغب في القيام بذلك أيضا، قفل مزدوج في التحقق، فإنه سيتم تسريع الوصول إلى المفرد الخاص بك

 public static CustomerController Instance
        {
                get 
                {
                        if( _instance == null )
                        {
                           lock(singletonLock)
                           {
                                if( _instance == null )
                                {
                                        _instance = new CustomerController();  
                                }

                            }
                        }   
                        return _instance;
                }
        }

الجواب بسيط جدا:تريد الحصول على نفس كائن في كل مرة يتم استخدامه.

يمنحك مزايا كونك متغيرًا عالميًا (أي.هناك واحد فقط) مع مزايا كونه كائنًا فئة (من بين أشياء أخرى، يمكنه إجراء تهيئة غير مرئية في المرة الأولى التي تكون هناك حاجة إليها).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top