Tuesday, February 27, 2024

ব্রিজ

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

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

Bridge Pattern: এটি আলাদা করে abstraction কে implementation থেকে। এটি structural design pattern এর দলে পরে। ধরা যাক একটি শার্ট কিনতে হবে। শার্ট কি ধরণের হবে –সাধারণ না প্রিন্টেড এটি বিবেচনার বিষয়। আবার শার্টের আকার ও বিবেচনার বিষয়। এখন Shirt interface কে implement করতে যেয়ে আমাদের inheritance এর উপর নির্ভর করলে PlainMedium,PlainLarge,PrintedMedium এবং PrintedLarge এর মত subclass তৈরি করতে হবে। এখন শার্টের অন্য ধরণ (যেমন: Stripes) যোগ করলেও আমাদের আকারের বিষয়টি মাথায় রেখে StripesMedium ও StripesLarge subclass করতে হবে। এখানে inheritance ধরণ আর আকার এর মাঝে এক binding সম্পর্ক তৈরি করে দিচ্ছে । কাজেই এই জটিলতা এড়াতে এখানে ধরণ ও আকার এর জন্য Shirt ও Size নামে আলাদা দুটি interface তৈরি করতে হবে আর Size object কে Shirt class এ attribute হিসেবে ব্যবহার করতে হবে( Composition এর উদাহরণ)।এখানে Size কাজ করছে bridge এর। এখন run-time এ Shirt object গঠনের সময় যেই Size দরকার তার object দিয়ে দিলেই হবে। দরকার পড়লে Shirt ও Size class দু'টির বিকাশ ঘটানো যায় ( যেমন:Shirt এ Printed ও Size এ Small নামে দু'টি subclass যোগ করা যায়) স্বাধীনভাবে,program এ কোন সমস্যা/ জটিলতা না বাড়িয়ে।

উদাহরণঃ(script tags এর মাঝে নিচের কোড বসবে)

class Size{
constructor(){}
des(){}
}
class Shirt{
constructor(a){ this.a=a;}
des(){}
getA(){ return this.a;}
}
class Plain extends Shirt{
constructor(a){super(a);}
des(){
document. write("Plain Shirt:");
super.getA().des();}
}
class Printed extends Shirt{
constructor(a){super(a);}
des(){
document. write("Printed Shirt:");
super.getA().des();}
}
class Medium extends Size{
constructor(){super();}
des(){
document. write("Medium size is chosen.");
}
}
class Large extends Size{
constructor (){super();}
des(){
document. write("Large size is chosen.");
}
}
var m=new Medium();
var p=new Plain(m);
p.des();
var t=new Printed(m);
t.des();

চেষ্টা করা যাকঃ Online courseএ ভর্তির জন্য Duration কে মাথায় নিয়ে একটি program লিখি। Online এর attribute হচ্ছে Duration class। Individual ও Group নামে Online class এর দু'টি subclass থাকবে ।আর Short ও Long নামে Duration এর দু'টি subclass থাকবে । সবার des() নামক method থাকবে।ঠিকভাবে কাজ করলে এটি নিচের বার্তা দেখাবে:

Individual/Group course:
Long/Short duration is chosen.

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