Special Case Pattern بالعربية

Special Case Pattern
الـ Pattern  من تأليف martinfowler   وتحدث عنه هنا  http://martinfowler.com/eaaCatalog/specialCase.html

بداية ً: الـ Design Patterns هى عبارة عن أفكار يتم تطبيقها فى الكود, هذة الأفكار هى حلول لمشاكل الكود (هكذا أراها ).

منها ما نتحدث عنه هنا وهو Special Case Pattern :-
والفكرة وراء هذا الـ Pattern, هو تفادى تكرار الكود فى حالة العودة بـ Null, فهو تقديم حل لـ “هل هناك حل للحد من الكشف عن القيمة إذا ما كانت بNULL , أو هل هناك حل لـرسالة الخطأ التى لا تغيب عن الأذهان دوما ألا وهى Object Reference Not Set To An Instance “

دوما نحتاج أن نقوم بالكشف عن Is Not Null , لنقوم بالتصرف حيال مقابلتنا Null , فلربما سنقوم بتكرار نفس الكود ولكن مع قيم فارغة مثل List فارغة أو Object فارغ. وهنا ما قمنا به هو الكشف عن Is Not Null وأيضاً قمنا بتكرار كود كان من الممكن أن لا نكرره. فهل هناك حل لهذا الأمر ؟ ……………………. هنا تعرض فكرة وجود Special Case حل لهذا الأمر .

ما هو الحل, ما هى Special Case ؟
الحل الذى يقدمه المؤلف هنا, أن نقوم بإنشاء Sub-class من الـ base class التى نريد أن ننشأ حالة خاصة منها, والحالة الخاصة هنا , أن يكون الـ Object بـ Null أو Unknown كما عرف الكاتب.
specialcasepattern

ففى هذة الحالات, يعرض المؤلف أن نقوم بتمرير قيم إفتراضيه لبيانات الـ Customer وليس Null لكامل الـ Object ولتقريب الشرح , ولنقتبس هذا المثال لـ Dino Esposito    من هذا المقال  :-

 

specialcasepatternfromdinoesposito

(المقال الخاص بالمثال السابق يتحدث عن معالجة الأخطاء لذلك قام باسترجاع Special Case)
فى المثال السابق, يتم إسترجاع Instance  من  NullOrder , وهى حسب شرح مؤلف الـ Pattern وهو  Martin Fowler  هى  Sub-Class , بمعنى أنها class ترث من Order فى هذا المثال, على أن تقدم بدورها قيماً إفتراضيه لكل من الـ Properties والـ Methods.

specialcasepattern2

بالطبع سنقوم بتعريف قيماً, إفتراضية داخل NullOrder كما ذكرنا لـكلاً من الـ Properties و الـ Methods الموجودة داخل Order .

أرجو أن أكون قد بسطت لكم الشرح , كنت فى البداية سأكتب تدوينة بسيطة فى facebook ولكن جاءت فكرة كتابتها هنا بمزيد من التفاصيل.
بالتوفيق للجميع إن شاء الله .
Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s