القائمة الرئيسية

الصفحات

ما هو نمط التصميم Singleton ؟

The Eager Approach،The Lazy Approach،EagerSingleton Java،What Is the Singleton Design،Pattern،What Is the Singleton Design Pattern،ما هو نمط تصميم Singleton؟،What Is،the Singleton Design،Pattern




 ما هو نمط التصميم Singleton ؟


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

تنفيذ نمط Singleton باستخدام Java


هناك العديد من الطرق لتنفيذ النمط الفردي في Java ؛ النهج المتلهف 
والكسول من الاختلافات الشائعة. كل من هذه الأساليب لها مزاياها وعيوبها. 
لذلك ، يجب أن تعتمد الطريقة التي تختار استخدامها على كيفية عمل التطبيق الخاص بك:

1- النهج الحريص Eager Approach


لا يعني تنفيذ النمط الفردي مع النهج الحثيث أن الفصل ينشئ مثيلًا جديدًا لنفسه عندما يتم تحميله :


public class EagerSingleton {
    private static EagerSingleton instance = new EagerSingleton();
 
    private EagerSingleton() {}
 
    public static EagerSingleton getInstance() {
        return instance;
    }
}

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







2- النهج الكسول  Lazy Approach


النهج الكسول هو الحل لمشكلة النهج المتلهف.
 يسمح لك بإنشاء مثيل جديد لفئة فردية فقط عندما يحتاجها برنامجك:



public class LazySingleton {
    private volatile static LazySingleton instance;
 
    private LazySingleton() {}    
 
    public static LazySingleton getInstance() {
        if (instance == null) {
            synchronized (LazySingleton.class) {
                if (instance == null) {
                    instance = new LazySingleton();
                }
            }
        }
 
        return instance;
    }
}


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

متى تستخدم نمط Singleton


يعد نمط Singleton مفيدًا في العديد من السيناريوهات ،
 لإنشاء مربعات حوار أو التعامل مع إعدادات التسجيل أو إدارة تجمعات مؤشرات الترابط.
استخدام آخر شائع للنمط الفردي هو إنشاء فئة مركزية تدير اتصالات قاعدة البيانات.



جدول المحتويات