Chain Of Responsibility Design Pattern ঃ
এই ডিজাইন প্যাটার্ন একটা চেইন এ কাজ করে থাকে। যেমন , আমাদের প্র্যত্যহিক জীবনে আমরা অনেক সমস্যার মুখমুখি হই , একটা সমস্যা একজন সমাধান না করতে পারলে সেটা আর একজনের কাছে যাবে, আবার সে না করতে পারলে আর একজনের কাছে যাবে এমন। এখানে একটা চেইন মেইন টেইন করতেছে ।
আবার এমন একটা সফটওয়ার এর কথা ভাবি , যার মাদ্ধমে আমরা পেমেন্ট করে থাকি । এখন এই পেমেন্ট এর পরিমানের উপর নির্ভর করবে এটা কোন মাদ্ধমে পেমেন্ট হবে । যেমন ৫০০ টাকার নিচে অথবা সমান যদি পরিমান থাকে তাহলে ব্যাংক এর মাদ্ধমে পেমেন্ট হবে , ১০০০ এর নিচে যদি হয় তাহলে কার্ড এর মাদ্ধমে হবে , এবং ১৫০০ এর নিচে হলে পেপাল এর মাদ্ধমে পেমেন্ট সম্পন্ন হবে ।
এই সমস্যা টা আমরা চেইন অব রেস্পসিবিলিটি এর মাদ্ধমে সমাধান করব ।
public abstract class PaymentHandler {
protected PaymentHandler next;
public void setNext(PaymentHandler next){this.next = next;}
public abstract void handlePayment(double amount);
}
Now....
public class BankPaymentHandler extends PaymentHandler{
@Override
public void handlePayment(double amount) {
if(amount <=500){
System.out.println("Paid using bank account : $"+amount);
}else{
next.handlePayment(amount);
}
}
}
------
public class CreditCardPaymentHandler extends PaymentHandler{
@Override
public void handlePayment(double amount) {
if(amount <=1000){
System.out.println("Paid using credit card : $"+amount);
}else{
next.handlePayment(amount);
}
}
}
---
public class PaypalPaymentHandler extends PaymentHandler{
@Override
public void handlePayment(double amount) {
if(amount <=1500){
System.out.println("Paid using paypal : $"+amount);
}else{
next.handlePayment(amount);
}
}
}
Main Class
public class ChainOfReponsibilityApplication {
public static void main(String[] args) {
PaymentHandler bank = new BankPaymentHandler();
PaymentHandler creditCard = new CreditCardPaymentHandler();
PaymentHandler paypal = new PaypalPaymentHandler();
bank.setNext(creditCard);
creditCard.setNext(paypal);
bank.handlePayment(600);
creditCard.handlePayment(200);
bank.handlePayment(1200);
bank.handlePayment(600);
}
}
0 Comments