Sunday, February 25, 2024

স্ট্র্যাটেজি

কাদের জন্যঃ Object-oriented programming language সম্পর্কে ধারণা আছে এমন মানুষ।

যা প্রয়োজনঃ class,inheritance,composition,JavaScript সম্পর্কে পূর্ব ধারণা।

Strategy pattern:এটি একগুচ্ছ algorithms এর মাঝ থেকে program চালানোর সময়(run time) একটিকে নির্বাচনের কাজ করে থাকে। এটি Behavioral pattern এর দলে পড়ে। এখানে Behavior কে Class থেকে আলাদা করা হয়। Strategy pattern এ method কে inherit করা যাবে না। যেমন: Gym এর সদস্যদের বকেয়া চেয়ে message পাঠাতে হবে। এজন্য সাধারণ,বিশেষ ও কিশোর সদস্যদের জন্য দরকার আলাদা আলাদা সম্ভাষণযুক্ত message। একারণে Message নামে আলাদা একটি interface তৈরি করে সদস্যদের ধরণ অনুযায়ী subclass গঠন করা হয়েছে। say() method এর মাধ্যমে Message দেয়া হচ্ছে। বৃদ্ধ (Old) নামে আলাদা class গঠন করে Message class এর বিকাশ ঘটানো যায় তবে এর কাঠামো change করা যাবে না। এটি হলো Open/Closed principle এর উদাহরণ যা আমরা SOLID principle এ জেনেছি।Gym নামে আরেকটি interface গঠন করে তার subclass GymManager এ Message এর attribute ব্যবহার করা হয়েছে,যা composition এর উদাহরণ। remind() method এ ঐ Message subclass এর method call করা হয়েছে। GymManager এর object এ program চালানোর সময় Message এর যেই subclass দরকার তার object গঠন করে দিয়ে দেয়া হয়েছে। তারপর GymManager এর object তার method remind () কে ব্যবহার করেছে। উদাহরণে run time এ Special () এর object তৈরি করে pass করা হয়েছে GymManager এর object এ।

উদাহরণঃ(script tags এর মাঝে নিচের কোড বসবে)
class Message{
constructor (){}
say(){ document. write(" Respective message goes here.");
}
}
class Special extends Message{
constructor(){super ();}
say(){ document.write("Dear Special Member,Greetings from Gym Y. Please clear your dues!");
}
}
class Regular extends Message {
constructor(){super();}
say(){ document.write ("Dear Member,Greetings from Gym Y. Please clear your dues!");
}
}
class Ado extends Message{
constructor(){super ();}
say(){ document. write ("Hello there!Greetings from Gym Y. Please clear your dues!");
}
}
class Gym{
constructor(){}
remind(){}
}
class GymManager extends Gym{
constructor(a){super();
this.a=a;}
static plain(a){ return new Context(" ");}
static messCon(a){return new Context(a);}
remind(){
this.a.say();
}
}
a= new Special();
c=new GymManager(a);
c.remind();

চেষ্টা করা যাকঃ Online Food Manager নতুন,সাধারণ ও বিশেষ সদস্যদের জন্য New Product(৩ টি implementation) সম্পর্কে জানাবে।

কৃতজ্ঞতাঃ এই লেখা তৈরি করতে দরকারি তথ্য নেয়া হয়েছে Wikipedia, আকর বই "'Design Patterns:Elements Of Reusable Object-Oriented Software' by Eric Gamma,Richard Helm,Ralph Johnson and John Vlissides(Addisson-Wesley.1994)" ও লেখকের তৈরি করা নানা program থেকে।
মন্তব্য ও যোগাযোগঃ mrh4478@gmail.com

No comments:

Post a Comment