Saturday, March 23, 2024

মেমেন্টো

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

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

Memento:এটি objects এর ভেতরের অবস্থা প্রকাশ করে দেয়। object এর পূর্বের অবস্থা পুনরুদ্ধারে এই design pattern এর ব্যবহার করা হয়। এটি Behavioral Design Pattern দলের। এর প্রধান অংশ হচ্ছে:

  • Originator: যার ভেতরের অবস্থা আমাদের বিবেচনার বিষয়।
  • Caretaker:যে Originator এর উপর কাজ করে;তার ভেতরের পরিবর্তনকে পূর্বের অবস্থায় নিয়ে যেতে চায়।
  • Memento:এটি সাধারণ object; এর উপর Caretaker এর কোন প্রভাব নেই; নাম শুনেই বোঝা যাচ্ছে এটি অতীতের কোন জিনিস বা ঘটনাকে নির্দেশ করছে।
উদাহরণে Memento class B এর member হচ্ছে একটি integer এবং getInt() এর মাধ্যমে সেটি integerটিকে return করছে। Originator class A তার set() এর মাধ্যমে তার অবস্থা ঠিক করছে আর store() এর সাহায্যে তা Memento object এ রুপান্তর করছে আর getB() এর মাধ্যমে প্রযোজ্য Memento object এর integer কে প্রকাশ করে দিচ্ছে।Caretaker তার add() এর সাহায্যে Originator object এর রুপান্তর করা Memento object জমা করছে নিজের array তে। getState() এর মাধ্যমে user এর সরবরাহ করা index নিয়ে পূর্বের দরকারি Memento object কে পুনরুদ্ধার করছে।

উদাহরণ:
//memento
class B{
constructor(c){this.c=c;}
getInt(){ return this.c;}
}
//originator
class A{
constructor(){}
set(a){this.a=a;}
store(){
var b=new B(this.a);
return b;
}
getB(k){
this.a=k.getInt();
document.write(this.a);
}
}
//caretaker
class Caretaker {
constructor(){this.s=[];}
add(item){
this.s.push(item);
}
getState(ind){
return this.s[ind];
}
}
var c=new Caretaker ();
var a=new A();
a.set(2);
c.add(a.store());
a.set(3);
c.add(a.store());
a.set(4);
c.add(a.store());
a.getB(c.getState(2));

কৃতজ্ঞতাঃ এই লেখা তৈরি করতে দরকারি তথ্য নেয়া হয়েছে 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