কাদের জন্যঃ Object-oriented programming language সম্পর্কে ধারণা আছে এমন মানুষ।
যা প্রয়োজনঃclass,inheritance,composition,JavaScript সম্পর্কে পূর্ব ধারণা।
Mediator: এটি Behavioral Design Pattern দলের।এখানে objects নিজেদের মধ্যে communicate না করে mediator এর মাধ্যমে communicate করে।এখানে objects দের মধ্যে সরাসরি নির্ভরশীলতা কমিয়ে loose coupling কে উৎসাহিত করা হয়েছে আর objectsদের মধ্যে Communication এর ভার দেয়া হয়েছে Mediator class কে। প্রধান তিনটি components হচ্ছেঃ Mediator,Concrete Mediator( Mediator এর implementation) এবং Colleague (যার objects এর মধ্যে সরাসরি যোগাযোগ হবে না)। উদাহরণে Colleague class O এর methods হচ্ছে message() ও received ()।একই নামে Mediatorএও দু'টি method আছে তবে তারা parameter হিসেবে O এর object নেয়। A এর object তৈরি করে যখন message () কে ডাকা হয়েছে তখন প্রথমে Mediator এর message () কে ডাকা হয়েছে তারপর ভেতরের বার্তা দেখানো হচ্ছে। C এর object যখন received() কে call করছে তখন একই রকম ব্যাপার ঘটছে।
উদাহরণ:
class O{
constructor(m){this.m=m;}
id(){}
message(){}
received (){}
}
class A extends O{
constructor(s,m){super(m);
this.s=s;}
id(){return this.s;}
message(){
this.m.message(this);
document.write(this.id()+": Hello there! How are you?");
}
received(){
this.m.received(this);
document.write(this.id()+": Fine! Thank you!");
}
}
class C extends O{ constructor(s,m){super(m); this.s=s;}
id(){return this.s;}
message(){
this.m.message(this);
document.write(this.id()+": Hello there! How are you?");
}
received(){
this.m.received(this);
document.write(this.id()+": Fine! Thank you!");
}
}
class M{
constructor (){}
message(O){}
received(O){}
}
class ConcreteM extends M{
constructor(){super ();}
message(O){
document.write(" Mediator forwards a message from "+O.id()+" to others.");
}
received(O){
document.write(" Mediator receives a message sent by "+O.id()+" for others.");
}
}
var m=new ConcreteM();
var a=new A("obj1",m);
var s=new A("obj2",m);
a.message();
s.received();
চেষ্টা করা যাক: একটি অফিসের বিভিন্ন বিভাগের মধ্যে বার্তা আদান-প্রদান হচ্ছে । PABX হচ্ছে এখানে Mediator আর Department হচ্ছে Colleague interfaceআর A ও C হচ্ছে তার implementation। সবার sent() ও received () নামের method থাকবে।
কৃতজ্ঞতাঃ এই লেখা তৈরি করতে দরকারি তথ্য নেয়া হয়েছে Wikipedia,www.geeksforgeeks.org,আকর বই "'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