الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

singleton pattern in c sharp

بدأه altae13 في 15 يناير 2012 · 4 رد · 818 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

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

singleton pattern in c sharp

Implementing the Singleton Pattern in C Sharp

وشكرا مقدما

#2

السلام عليكم ..

  1. الــ design pattrens (رابط عربي) هي حلول عامة لمشاكل متكررة ..
  2. الــ Singletonهو أحد الــ Creational Design pattrens .
  3. فكرته : في بعض الحالات نحن بحاجة إلى كائن object واحد فقط من صف معين class .., و هو يقوم بالمهام المطلوبة , مثل فتح قاعدة البيانات , الطباعة , قراءة الملفات من القرص .. والــ Singleton pattern هو الذي يحقق إنشاء كائن واحد من الصف .
  4. نحعل الــ Constructor كــ Private .. حتى لا يتم الوصول إليه من خارج الصف .
  5. نقوم بتعريف متحول static هو الــ instance من الصف و هو الذي يتم استخدامه و في البداية يكون null .
  6. نقوم بتعريف ميثود static اسمها GetInstance تقوم بفحص هل الــ instance هو null .. فإذا كان كذلك تقوم بإنشاءه و إعادته .
  7. مثال :
    public  class SingletonDB
    	{
       	private static SingletonDB instance = null;
       	private SingletonDB()
       	{
       	}
    
       	public static SingletonDB GetInstance()
       	{
           	if (instance == null)
               	instance = new SingletonDB();
    
           	return instance;
       	}
    
       	public void ExecuteTheQuery(String  sql)
       	{
           	//do it here
       	}
    
    	}

  8. الاستدعاء :
    private void button7_Click(object sender, EventArgs e)
        	{
            	SingletonDB.GetInstance().ExecuteTheQuery("SELECT * FROM Customer;");
        	}

  9. لا نستطيع عمل new من هذا الصف لأن الــ constructor هو Private ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

وعليكم السلام

اشكرك على الرد

بس ممكن توضيح اكثر على فكرته لم افهم فكرته نقطه رقم 3 ولماذا كل هذا الكود لتنفيذ شي بسيط نستطيع تنفيذه بطريقه اسهل انا باامس الحاجه الى فهم هذا النوع فارجو المساعده انا قريت ردك ونفذت الكود !

وشكرا مره ثانية !!

#4

السلام عليكم ..

  1. لا شكر على واجب..
  2. بالنسبة لفكرته ..إليك المفاهيم التالية :
    1. كما تعلم يتم إنشاء الكائنات (objects) من الصفوف (classes) باستخدام new ..كل Object عبارة عن مكان محجوز في الذاكرة فيه الــ variables و الــ methods (لنقل ذلك) .
    2. يمكن لنا إنشاء عدد لا نهائي من الــ Objects من Class معين (طبعا حسب الذاكرة) .
    3. بعض الحالات يعتبر فيها إنشاء أكثر من Object خاطئا أو لا داعي له , مثلا صف يفتح قاعدة بيانات , فلا داعي لفتح قاعدة البيانات مرتين من نفس التطبيق مثلا , أو التعامل مع الطابعة .. أو ... (الأمثلة كثيرة).
    4. الــ Singleton pattern يعالج هذه القضية .. فلو قمنا بتطبيقه على Class محدد .. فإنه يسمح فقط بإنشاء Object واحد من هذا الــ Class .
    5. اقتباس
      ولماذا كل هذا الكود لتنفيذ شي بسيط نستطيع تنفيذه بطريقه اسهل
      .. في معظم الكتب و المراجع التي تتكلم عن الــ design pattern , تذكره بالشكل الذي ذكرته أنا , (أي يمكننا القول أنه معياري) , و للأمانه فإن البعض يستخدمه بهذه الطريقة :

      {
      private static SingletonDB instance = new SingletonDB();;
      private SingletonDB()
      {
      }

      public static SingletonDB GetInstance()
      {
      return instance;
      }

      public void ExecuteTheQuery(String sql)
      {
      //do it here
      }

      }
      public  class SingletonDB
      أو هذه الطريقة :

      {
      public static SingletonDB Instance = new SingletonDB();;
      private SingletonDB()
      {
      }


      public void ExecuteTheQuery(String sql)
      {
      //do it here
      }

      }
      public  class SingletonDB
      و لو عندك أي طريقة أو ملاحظات .. فلا تتردد ...

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

أخي إذا بدك مثال موسع

من يومين وضعت برنامج إدارة مكتبة وقد إستخدمت فيه singleton pattern

ستجده على الرابط التالي :

Library mangment

بالتوفيق

1

مواضيع مشابهة