النمط الثالث:نمط الاستراتيجية Strategy

هذا النمط يستخدم في الحروب المختلفة
الفكرة الأساسية في هذا النمط أن تقوم بتغيير الاستراتيجية الخاصة بك في منتصف الحرب
مثلاُ أنت تفضل الطعن بالسيف من أول المعركة
هذا ممل جداً
ما رأيك في بعض التغيير لماذا لا تجرب طعم اللحم
(نفسي أذوق لحم هالواحد سامعني يا عبده)
بالطبع الأخ هانيبال (التابع لفيلم صمت الحملان وليس الفاتح الإفريقي)
سيكون على درجة عالية من الإنبساط لكن لسوء حظه أنه مات

بالطبع الملل ليس سبب مقنع لتكف عن الضرب بالسيف
في الغالب هناك خصم أنت تعرف أن مبارزتك له بالسيف ستأدي بك إلى الموت
تقريباً هنا نفس الفكر لكن في البرمجة
أنت تريد أن تتعامل مع جملة معينة بطريقة معينة
حتى تظهر مثلاُ فاصلة منقوطة في النص تقرر أن تتعامل معها بطريقة أخرى
طريقة الحل:
قم بكتابة واجهة فيها الدوال التي تمثل الاختلاف بين الاستراتيجيات
بعد ذلك قم بوراثة الواجهة السابقة في فئات مختلفة كل فئة تمثل استراتيجية معينة
في النهاية ستقوم بكتابة فئة تحتوي على كائن من الواجهة
وفيها الدوال المساعدة خذ get وهات set ودالة تقوم باستدعام الدالة التي تحتوي على استراتيجيتك
بالطبع تغيير الاستراتيجية تعتمد على الدالة هات set
تنفيذ الاستراتيجية تعتمد على الدالة الموجودة في الفئة الأخيرة
خذ عندك المثال التالي ولنبتعد عن الحروب والدماء ماذا عن عبارات الترحيب
واجهة الترحاب

public interface HelloStrategy    

{    

string generateHelloString();    

}

استراتيجية الترحاب بالإنجليزية

public class EnglishHelloStrategy implements HelloStrategy    

{    

public string generateHelloString()    

{    

return "Hello World!";    

}    

}

استراتيجية الترحاب بالعربية

public class ArabicHelloStrategy implements HelloStrategy    

{    

public string GenerateHelloString()    

{    

return "كيف حالك";    

}    

}

الفئة التي تحتوي على استراتيجية الترحاب

public class HelloPrinter    

{    

HelloStrategy helloStrategy;//هنا يوجد كائن الترحاب
public HelloStrategy getHelloStrategy {
//هنا يمكنك الحصول على استراتيجية الترحاب    

return helloStrategy;    

}    

public void setHelloStrategy {//هنا يمكنك تغيير استراتيجية الترحاب    

helloStrategy = value;    

}    

public void PrintHello()    

{//هنا يمكنك تنفيذ استراتيجية الترحاب    

if (helloStrategy != null) {    

ٍSystem.out.println(helloStrategy.GenerateHelloString());    

}    

}    

}

أعلم أن هناك بعض الآنسات يتصفحن الموضوع
لذا أتمنى منهن عدم قراءة الموضوع لاحتوائه على بعض مشاهد الرعب

الله معكم
شهيد الأقصى

Leave a Reply