পরিষেবা-ভিত্তিক আর্কিটেকচারের (SOA) উত্থানের সাথে, আরও অনেক সংস্থা তাদের এন্টারপ্রাইজ সিস্টেমের জন্য তৃতীয় পক্ষের পরিষেবাগুলি ব্যবহার করছে। এই সংস্থাগুলিকে দ্রুত পরিবর্তনশীল ব্যবসায়িক পরিবেশের সাথে তাল মিলিয়ে চলতে হবে, যার অর্থ এক পরিষেবা প্রদানকারীর পরিষেবা অন্যের জন্য পরিত্যাগ করা।
এই ধরনের ক্ষেত্রে, একটি ব্যবসার বিদ্যমান আর্কিটেকচার একটি নতুন প্রদানকারীর সাথে বেমানান হতে পারে। নতুন সফ্টওয়্যারের সাথে সামঞ্জস্যপূর্ণ করার জন্য এন্টারপ্রাইজ কোড পুনর্লিখনে মাস নষ্ট করার পরিবর্তে, একটি ব্যবসা অ্যাডাপ্টার ডিজাইন প্যাটার্ন ব্যবহার করতে পারে।
অ্যাডাপ্টার ডিজাইন প্যাটার্ন কি?
অ্যাডাপ্টার প্যাটার্নটি এমন ক্লাসগুলিকে অনুমতি দেয় যেগুলির মধ্যে বেমানান ইন্টারফেসগুলি একসাথে কাজ করতে পারে৷ এটি একটি বিদ্যমান ক্লাস (বা সফ্টওয়্যার) এর ইন্টারফেসকে একটি ক্লায়েন্ট (বা পরিষেবা) আশা করে এমন একটিতে রূপান্তর করে এটি করে। দুটি ধরণের অ্যাডাপ্টার রয়েছে: অবজেক্ট অ্যাডাপ্টার এবং ক্লাস অ্যাডাপ্টার।
অবজেক্ট অ্যাডাপ্টার অ্যাডাপ্টারের সাথে অ্যাডাপ্টি মোড়ানোর জন্য কম্পোজিশন ব্যবহার করে, কার্যকরভাবে ইন্টারফেস তৈরি করে যা ক্লায়েন্ট আশা করে। সুতরাং, যদি ক্লায়েন্ট একটি স্ট্রিং আশা করে তবে অ্যাডাপ্টার একটি পূর্ণসংখ্যা (অ্যাডাপ্টি) নেবে এবং এটি একটি স্ট্রিংয়ের বৈশিষ্ট্য দেবে।
উপরের ক্লাস ডায়াগ্রাম অবজেক্ট অ্যাডাপ্টারের প্রতিনিধিত্ব করে। দ্য অ্যাডাপ্টার ক্লাস বাস্তবায়ন করে লক্ষ্য ইন্টারফেস , কার্যকরভাবে ইন্টারফেসের সমস্ত পদ্ধতিতে অ্যাক্সেস লাভ করে। তারপর এটি একটি অভিযোজিত অভিযোজিত এবং যে মোড়ানো অভিযোজিত সঙ্গে লক্ষ্য ইন্টারফেস পদ্ধতি
অ্যান্ড্রয়েডের জন্য সেরা ফ্রি ভিআর গেমস
ক্লাস অ্যাডাপ্টার একাধিক উত্তরাধিকার ব্যবহার করে, যেখানে অ্যাডাপ্টার ক্লাসটি অ্যাডাপ্টি এবং টার্গেট ক্লাস উভয়ের সাবক্লাস। নীচের ক্লাস ডায়াগ্রামটি ক্লাস অ্যাডাপ্টারের প্রতিনিধিত্ব করে, যা আপনি একাধিক উত্তরাধিকার সমর্থন করে এমন প্রোগ্রামিং ভাষাগুলিতে ব্যবহার করতে পারবেন।
জাভাতে অ্যাডাপ্টার ডিজাইন প্যাটার্ন বাস্তবায়ন করা
এই অ্যাপ্লিকেশন অবজেক্ট অ্যাডাপ্টার বাস্তবায়ন করবে। এই নমুনা অ্যাপ্লিকেশনটি চার্জ কার্ডের ব্যবহার এবং প্রক্রিয়াকরণ থেকে ক্রেডিট কার্ডে রূপান্তরিত একটি আর্থিক সংস্থার অনুকরণ করবে। এই সংস্থাটি মূলত নিম্নলিখিত চার্জ কার্ড ইন্টারফেস ব্যবহার করেছিল:
public interface ChargeCard {
public void monthlyBalance();
public void lateFee();
public void Annualfee();
}
একটি জনপ্রিয় ধরনের চার্জ কার্ড যা এই সংস্থার সিস্টেম প্রক্রিয়া করে তা হল প্লাম কার্ড:
public class PlumCard implements ChargeCard {
private int cardNo;
private String customerName;
private double balance;
// primary constructor
public PlumCard(int cardNo, String customerName, double balance) {
this.cardNo = cardNo;
this.customerName = customerName;
this.balance = balance;
}
// getters and setters
public int getCardNo() {
return cardNo;
}
public void setCardNo(int cardNo) {
this.cardNo = cardNo;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
@Override
public void monthlyBalance() {
System.out.println("In January " + this.customerName + " spent " + this.balance);
}
@Override
public void lateFee() {
System.out.println(this.customerName + " monthly latefee is .00");
}
@Override
public void Annualfee() {
System.out.println(this.customerName + " annual fee is 0.00");
}
}
এই আর্থিক প্রতিষ্ঠানটি ক্রেডিট কার্ডে রূপান্তরিত হচ্ছে এবং চার্জ কার্ডগুলিকে পর্যায়ক্রমে সরিয়ে দিচ্ছে, তাই তাদের কিছু গ্রাহকের কাছে এখন ক্রেডিট কার্ড রয়েছে:
public interface CreditCard {
public void monthlyMinPayment();
public void interest();
public void Annualfee();
}
আর্থিক প্রতিষ্ঠান এন্টারপ্রাইজ সিস্টেম এখন শুধুমাত্র ক্রেডিট কার্ড প্রক্রিয়াকরণ করে, কারণ এটি আগামী বছরে চার্জ কার্ডের ব্যবহার বন্ধ করতে চাইছে। কিন্তু তাদের বেশিরভাগ গ্রাহক এখনও চার্জ কার্ড ব্যবহার করেন। সুতরাং, প্রকৌশলীরা সিদ্ধান্ত নিয়েছে যে তাদের সমস্ত গ্রাহকরা ক্রেডিট কার্ডে স্থানান্তরিত না হওয়া পর্যন্ত একটি অ্যাডাপ্টার প্রয়োগ করা সর্বোত্তম।
ইউএসবি ফ্ল্যাশ ড্রাইভে উইন্ডোজ 10 ইনস্টল করুন
public class ChargeCardAdapter implements CreditCard {
ChargeCard chargeCard;
public ChargeCardAdapter(ChargeCard chargeCard) {
this.chargeCard = chargeCard;
}
@Override
public void monthlyMinPayment() {
this.chargeCard.monthlyBalance();
}
@Override
public void interest() {
this.chargeCard.lateFee();
}
@Override
public void Annualfee() {
this.chargeCard.Annualfee();
}
}
এই ChargeCardAdapter জাভা ক্লাস ক্রেডিটকার্ড বাস্তবায়ন করে জাভা ইন্টারফেস . এটি একটি ক্রেডিট কার্ডের বৈশিষ্ট্য প্রদান করে চার্জকার্ড (অ্যাডাপ্টি) কে অভিযোজিত করে। উদাহরণস্বরূপ, সিস্টেমটি একটি ক্রেডিট কার্ডের সুদের ফি প্রক্রিয়া করবে, যা এখনও রূপান্তরিত হয়নি এমন একটি চার্জ কার্ড গ্রাহকের বিলম্বের ফি।
অ্যাডাপ্টার প্যাটার্ন ব্যবহার করার সুবিধা
অ্যাডাপ্টার প্যাটার্ন ব্যবহার করার প্রধান সুবিধা হল এটি ক্লায়েন্টদের তাদের কোড পরিবর্তন না করেই নতুন পরিষেবা, লাইব্রেরি এবং বৈশিষ্ট্যগুলি ব্যবহার করতে দেয়। এটি অ্যাপ্লিকেশন স্কেলেবিলিটি প্রচার করে।
আরেকটি সুবিধা হল এই প্যাটার্নটিও নমনীয়। অ্যাডাপ্টার প্যাটার্ন দুটি বাস্তবায়ন পদ্ধতি প্রদান করে: অবজেক্ট অ্যাডাপ্টার এবং ক্লাস অ্যাডাপ্টার।