1. ব্রিজ প্যাটার্ন কি
1.1 সংজ্ঞা এবং ধারণা
ব্রিজ প্যাটার্ন, যা সেতু প্যাটার্ন হিসেবেও পরিচিত, এটি এমন একটি ধরণের স্ট্রাকচারাল ডিজাইন প্যাটার্ন যা সার্বত্রিক এবং বিস্তারিত ভিন্নভাবে চলতে দেয়। সংক্ষেপে, ব্রিজ প্যাটার্ন হল ব্যাপারিকতা থেকে বিভাজন করার একটি সমস্যার সমাধান।
1.2 ব্রিজ প্যাটার্নের উদ্দেশ্য এবং প্রভাব
ব্রিজ প্যাটার্নের মূল উদ্দেশ্য হল ব্যাপারিকতা অংশকে তার বিস্তারিত অংশ থেকে আলাদা করে সংশোধন এবং বিস্তারে দেওয়া যাতে তারা প্রভাবিত না করে। এটি চোখে পড়লে বোঝা গেলে এটি একটি সার্বত্রিক ব্রিজ ক্লাসের ভোল্টাচ্ছে।
2. ব্রিজ প্যাটার্নের বৈশিষ্ট্য এবং সুবিধা
ব্রিজ প্যাটার্নের কিছু প্রধান বৈশিষ্ট্য এবং সুবিধাগুলি হল:
- সিস্টেমের প্রসারযোগ্যতা বৃদ্ধি দেয়। যেকোনো পরিবর্তন না করে ব্যাপারিকতা এবং বিস্তারণা পূর্বনির্ধারণ করা যায়।
- খোলা/বন্ধ নীতি মেনে চলুন। অস্তিত্ব অঞ্চল এবং বিস্তারণা পূর্বনির্ধারণ করা যায় যেন তারা প্রভাবিত না হয়।
- ক্লায়েন্ট কে বিস্তারণার বিশদগুলির সাদৃশ্য দেয়া, যাতে ব্যবহারকারীর প্রস্তুত ব্যখ্যার বিস্তারণা বিশদগুলি লুকিয়ে রেখে।
3. ব্রিজ প্যাটার্নের অনুপ্যোগ ক্ষেত্র
- যখন আপনি কোনও জটিল বস্তুর বিস্তারণার বৈশিষ্ট্য ব্যবহার থেকে প্রতিনিধিত্ব ছিনে তুলতে চান, তখন ব্রিজ প্যাটার্ন ব্যবহার করা যায়। এটা বিশেষত কোড এর কর সচল বিচারে পজিটিভ রুপ দেয়, বিশেষতঃ যখন প্রোগ্রাম কেবল অবজেক্টের অংশ ব্যবহার করে সর্বদায়ে চালুরিতে।
- যখন আপনি একাধিক করে ব্যাপারিকতা বিড়ার মধ্যে নির্দিষ্ট বিস্তারণা অবস্হা ভাগ করতে চান, তবে ক্লায়েন্ট কোডের জন্য তারা স্বাধীন দেখতে হবে।
4. গোল্ডারে ব্রিজ প্যাটার্নের সম্পাদনা
4.1 UML ক্লাস ডায়াগ্রামে ব্রিজ প্যাটার্নের পরিচিতি
4.2 বিস্তারিত সম্পাদনা পদক্ষেপ
4.2.1 সার্বত্রিক বৈশিষ্ট্যের ইন্টারফেস সংরক্ষণ
প্রথমে, আমরা একটি DrawAPI ইন্টারফেস সংরক্ষণ করি, বিস্তৃত কোড নিম্নলিখিত:
// সার্বত্রিক বৈশিষ্ট্যের ইন্টারফেস
type DrawAPI interface {
DrawACircle(radius, x, y int)
}
4.2.2 বৈশিষ্ট্যগুলির নির্ধারণ
তারপরে, আমরা দুটি ক্লাস, RedCircle এবং BlueCircle, যা DrawAPI ইন্টারফেসের মেথড সংরক্ষণ করে:
// বৈশিষ্ট্যসমূহের নির্ধারণ
type RedCircle struct {}
func (c *RedCircle) DrawACircle(radius, x, y int) {
// লাল গোলা আঁকার লজিক
}
type BlueCircle struct {}
func (c *BlueCircle) DrawACircle(radius, x, y int) {
// নীল গোলা আঁকার লজিক
}
4.2.3 সার্বত্রিক ব্রিজ ইন্টারফেসের সংরক্ষণ
সার্বত্রিক ব্রিজ ইন্টারফেস Shape সংরক্ষণ করুন:
// সার্বত্রিক ব্রিজ ইন্টারফেস
type Shape interface {
Draw()
}
4.2.4 ব্রিজ ক্লাসের বৈশিষ্ট্যগুলির সংরক্ষণ
ব্রিজ ক্লাস সংরক্ষণ করুন, যা Shape ইন্টারফেসটি অনুসরণ করে এবং DrawAPI ইন্টারফেসের ধরনের একটি অবজেক্ট থাকে:
// ব্রিজ ক্লাস
type Circle struct {
x, y, radius int
drawAPI DrawAPI
}
func (c *Circle) Draw() {
c.drawAPI.DrawACircle(c.radius, c.x, c.y)
}
4.2.5 ক্লায়েন্ট আবেদনের উদাহরণ
func main() {
redCircle := &Circle{100, 100, 10, new(RedCircle)}
blueCircle := &Circle{100, 100, 10, new(BlueCircle)}
redCircle.Draw()
blueCircle.Draw()
}
এভাবে, আমরা গোলারে ব্রিজ প্যাটার্ন পরিচালনা করেছি।