ব্রিজ এবং অ্যাডাপ্টারের অভিপ্রায় পৃথক এবং আমাদের পৃথক পৃথক উভয় ধরণের প্রয়োজন।
ব্রিজ প্যাটার্ন:
- এটি একটি কাঠামোগত নিদর্শন
- বিমূর্ততা এবং বাস্তবায়ন সংকলন সময়ে সীমাবদ্ধ নয়
- বিমূর্ততা এবং বাস্তবায়ন - উভয় ক্লায়েন্ট প্রভাব ছাড়াই পৃথক হতে পারে
- উত্তরাধিকারের উপর রচনা ব্যবহার করে।
ব্রিজ প্যাটার্নটি ব্যবহার করুন যখন:
- আপনি প্রয়োগের রান-টাইম বাঁধাই করতে চান,
- আপনার দ্বিগুণ ইন্টারফেস এবং অসংখ্য বাস্তবায়নের ফলে ক্লাসগুলির একটি বিস্তার রয়েছে,
- আপনি একাধিক অবজেক্টের মধ্যে একটি বাস্তবায়ন ভাগ করতে চান,
- আপনাকে অर्थোগোনাল শ্রেণীর শ্রেণিবিন্যাসের মানচিত্র তৈরি করতে হবে।
@ জন সোনমেজ উত্তর ক্লাসের ক্রমবর্ধমান হ্রাসে ব্রিজ প্যাটার্নের কার্যকারিতা পরিষ্কারভাবে দেখায়।
কোড উদাহরণ সহ ব্রিজ প্যাটার্নের আরও ভাল অন্তর্দৃষ্টি পেতে আপনি নীচের ডকুমেন্টেশন লিঙ্কটি উল্লেখ করতে পারেন
অ্যাডাপ্টার প্যাটার্ন :
- এটি দুটি সম্পর্কিত নয় এমন ইন্টারফেসকে বিভিন্ন বস্তুর মাধ্যমে একসাথে কাজ করার অনুমতি দেয় , সম্ভবত একই ভূমিকা পালন করে।
- এটি আসল ইন্টারফেসটি পরিবর্তন করে।
মূল পার্থক্য:
- অ্যাডাপ্টার জিনিসগুলি ডিজাইন করার পরে কাজ করে তোলে; ব্রিজ তাদের আগে তাদের কাজ করে তোলে।
- ব্রিজটি আপ-ফ্রন্টটি ডিজাইন করা হয়েছে যাতে বিমূর্তি প্রয়োগ এবং প্রয়োগটি স্বতন্ত্রভাবে পরিবর্তিত হয় । সম্পর্কিত না হওয়া ক্লাসগুলি একসাথে কাজ করতে অ্যাডাপ্টার পুনঃনির্মাণযোগ্য।
- উদ্দেশ্য: অ্যাডাপ্টার দুটি সম্পর্কযুক্ত ইন্টারফেসকে এক সাথে কাজ করার অনুমতি দেয়। ব্রিজ বিমূর্ততা এবং প্রয়োগকে স্বাধীনভাবে পৃথক হতে দেয়।
ইউএমএল ডায়াগ্রাম এবং কার্য কোডের সাথে সম্পর্কিত এসই প্রশ্ন:
ব্রিজ প্যাটার্ন এবং অ্যাডাপ্টার প্যাটার্নের মধ্যে পার্থক্য
দরকারী নিবন্ধ:
ব্রাউজ প্যাটার্ন নিবন্ধ উত্স
উত্স তৈরির অ্যাডাপ্টার প্যাটার্ন নিবন্ধ
জার্নালদেব ব্রিজ প্যাটার্ন নিবন্ধ
সম্পাদনা করুন:
ব্রিজ প্যাটার্ন রিয়েল ওয়ার্ল্ড উদাহরণ (মেটা.স্ট্যাকওভারফ্লো ডটকমের পরামর্শ অনুসারে, ডকুমেন্টেশন সূর্য অস্ত যাওয়ার পরে এই পোস্টে অন্তর্ভুক্ত ডকুমেন্টেশন সাইটের উদাহরণ)
ব্রিজ প্যাটার্ন বাস্তবায়ন থেকে বিমূর্তিকে ডিউপল করে তোলে যাতে উভয়ই পৃথকভাবে পৃথক হতে পারে। এটি উত্তরাধিকারের চেয়ে রচনা দিয়ে অর্জিত হয়েছে।
ব্রিজ প্যাটার্ন ইউএমএল উইকিপিডিয়া থেকে:
এই প্যাটার্নে আপনার চারটি উপাদান রয়েছে।
Abstraction
: এটি একটি ইন্টারফেস সংজ্ঞায়িত করে
RefinedAbstraction
: এটি বিমূর্তি প্রয়োগ করে:
Implementor
: এটি বাস্তবায়নের জন্য একটি ইন্টারফেস সংজ্ঞায়িত করে
ConcreteImplementor
: এটি প্রয়োগকারী ইন্টারফেস প্রয়োগ করে।
The crux of Bridge pattern :
রচনা (এবং কোনও উত্তরাধিকার নেই) ব্যবহার করে দুটি অर्थোগোনাল শ্রেণীর শ্রেণিবিন্যাস। বিমূর্ততা শ্রেণিবিন্যাস এবং বাস্তবায়ন শ্রেণিবিন্যাস স্বাধীনভাবে পৃথক হতে পারে। বাস্তবায়ন কখনই অ্যাবস্ট্রাকশনকে বোঝায় না। অ্যাবস্ট্রাকশনটিতে সদস্য হিসাবে প্রয়োগের ইন্টারফেস থাকে (রচনার মাধ্যমে)। এই রচনাটি উত্তরাধিকারের স্তরক্রমের আরও একটি স্তর হ্রাস করে।
আসল শব্দ ব্যবহারের কেস:
ম্যানুয়াল এবং অটো গিয়ার সিস্টেমের উভয় সংস্করণ রাখতে বিভিন্ন যানকে সক্ষম করুন।
উদাহরণ কোড:
/* Implementor interface*/
interface Gear{
void handleGear();
}
/* Concrete Implementor - 1 */
class ManualGear implements Gear{
public void handleGear(){
System.out.println("Manual gear");
}
}
/* Concrete Implementor - 2 */
class AutoGear implements Gear{
public void handleGear(){
System.out.println("Auto gear");
}
}
/* Abstraction (abstract class) */
abstract class Vehicle {
Gear gear;
public Vehicle(Gear gear){
this.gear = gear;
}
abstract void addGear();
}
/* RefinedAbstraction - 1*/
class Car extends Vehicle{
public Car(Gear gear){
super(gear);
// initialize various other Car components to make the car
}
public void addGear(){
System.out.print("Car handles ");
gear.handleGear();
}
}
/* RefinedAbstraction - 2 */
class Truck extends Vehicle{
public Truck(Gear gear){
super(gear);
// initialize various other Truck components to make the car
}
public void addGear(){
System.out.print("Truck handles " );
gear.handleGear();
}
}
/* Client program */
public class BridgeDemo {
public static void main(String args[]){
Gear gear = new ManualGear();
Vehicle vehicle = new Car(gear);
vehicle.addGear();
gear = new AutoGear();
vehicle = new Car(gear);
vehicle.addGear();
gear = new ManualGear();
vehicle = new Truck(gear);
vehicle.addGear();
gear = new AutoGear();
vehicle = new Truck(gear);
vehicle.addGear();
}
}
আউটপুট:
Car handles Manual gear
Car handles Auto gear
Truck handles Manual gear
Truck handles Auto gear
ব্যাখ্যা:
Vehicle
একটি বিমূর্ততা।
Car
এবং Truck
দুটি কংক্রিট বাস্তবায়ন Vehicle
।
Vehicle
একটি বিমূর্ত পদ্ধতি সংজ্ঞায়িত করে: addGear()
।
Gear
বাস্তবায়নকারী ইন্টারফেস হয়
ManualGear
এবং AutoGear
দুটি বাস্তবায়ন হয় Gear
Vehicle
implementor
ইন্টারফেস বাস্তবায়ন চেয়ে ইন্টারফেস রয়েছে । Compositon
প্রয়োগকারী ইন্টারফেসের এই প্যাটার্নটির কর্কট: এটি বিমূর্ততা এবং প্রয়োগকে স্বাধীনভাবে পৃথক হতে দেয়।
Car
এবং Truck
বিমূর্তনের জন্য বাস্তবায়ন (পুনরায় সংজ্ঞায়িত বিমূর্ততা) সংজ্ঞায়িত করুন addGear()
: এতে রয়েছে Gear
- হয় Manual
বা হয়Auto
ব্রিজ প্যাটার্নের জন্য কেস (গুলি) ব্যবহার করুন :
- বিমূর্তি এবং বাস্তবায়ন একে অপরকে স্বতন্ত্র পরিবর্তন করতে পারে এবং তারা সংকলনের সময়ে আবদ্ধ হয় না
- মানচিত্র লম্ব শ্রেণীবিন্যাসের - জন্য এক বিমূর্ততা এবং জন্য এক বাস্তবায়ন ।