‏إظهار الرسائل ذات التسميات Design Patterns. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات Design Patterns. إظهار كافة الرسائل

الجمعة، ٢٠ يونيو ٢٠٠٨

التجمع الخامس لـ dotnetwork.org



الموعد :

28 يونية 2008 ،
12:00 - 16:00

الحضور مجاني =)

المتكلمون
ياسر مكرم
Software Architect - Santeon.

محمد سامي
Technical Architect, MVP - ITWorx.

جدول الاعمال
12:00 - 13:30 :
Delivering Rich User Experience Applications using Silverlight 2
ياسر مكرم.

13:30 - 14:00 : استراحه لتناول القهوه

14:00 -- 15:30 :
Patterns and Anti-patterns of SOA
محمد سامي.

15:30 - 16:00 : غداء

المكان :

الكليه الدولية الكنديه ، @ "التجمع الخامس"

الحافلات ستكون متاحة في : النادي السكة (11:00 صباحا -- 11:30 صباحا)
الرجاء ان تكون قبل ذلك ، 11:30 حيث سنغادرفي الموعد المحدد..


لمن يرغب في المزيد من الاخبار عن هذا الحدث و غيرها من الأحداث القادمة من dotnetwork.org ، يرجى التحقق من الروابط التالية :

ياهو! المجموعة :
http://tech.groups.yahoo.com/group/dotnetworkorg/

Facebook Event:
http://www.facebook.com/event.php?eid=15523324683
يفضل الانضمام الى الحدث المذكور اعلاه اذا كان لديك حساب فاس بوك حتى نتمكن من تقديرعدد الحاضرين..

Facebook Fan Page:
http://www.facebook.com/pages/netWorkorg/13135685545

Facebook Group:
http://www.facebook.com/group.php?gid=2409268236

ارجو الا تترددوا في الاتصال بي اذا كان لديك اي اسئله اخرى..
القاكم هناك...

Read More......

الأحد، ٢٣ مارس ٢٠٠٨

Singleton Design Pattern

المشكلة :

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


المشكلة ليست في جعل ال Class لا يتم سوى عمل نسخة واحدة منه ، بل إن هذا يتم بكل بساطة باستخدام الكلمة المحجوزة Sealed ، ولكن المشكلة تكمن في أنك عندما تريد أن تستخدم نسخة أخرى فإنك لن تستطيع ، وبذا لن يمكنك الاستفادة منه في كل مكان


في هذه الحالة نلجأ لما يسمى Singleton .


الشرح :


في البداية سوف ننشأ Class وليكن اسمه Singleton .
وفي كلا الأحوال لا بد للمنشىء constructor أن يكون private لكي لا يتمكن أحد من عمل نسخة جديدة منه .
وسنعرف نسخة من ال Class داخل ال Class نفسه بالشكل التالي :

private readonly Singleton instance;




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








public Singleton getInstance

{


if (instance ==null) instance = new Singleton();


return instance


}






والآن هناك طريقتين لتطبيق هذه التقنية ، الطريقة السابقة التي ذكرناها وبامكانها العمل على أي لغة برمجة - بغض النظر عن أنني استخدم C# في الشرح - ، أما الطريقة الثانية فهي تتطلب لغة يمكنها قراءة static من أي مكان وهو ما يتوفر مثلاً في الجافا أو ال C# ولا يتوفر في ال C++ .

الطريقة الثانية تعتمد على الغاء الفنكشن getInstance والاعتماد على أن بامكان اللغة تعريف new من المتغير وقت التعريف ، ليصبح أمر التعريف بالشكل التالي :








public static readonly Singleton instance = new Singleton();






وفي هذه الحالة قم دائماً بقراءة instance دون الحاجة إلى التعريف لإنها static .

وهذه صورة توضح التقنيتن المشروحتين :









Read More......