PHP Interface দিয়ে Strategy Design Pattern

 

PHP Interface দিয়ে Strategy Design Pattern (বাংলা টিউটোরিয়াল)

Strategy Pattern একটি Behavioral Design Pattern যার মাধ্যমে আমরা কোন নির্দিষ্ট কাজ করার বিভিন্ন উপায় আলাদা করে রাখতে পারি এবং runtime-এ যেকোনো একটি স্ট্র্যাটেজি বেছে নিতে পারি।

এতে মূলত interface-এর মাধ্যমে বিভিন্ন algorithm বা behavior define করে, যেগুলো interchangeable হয়। এতে flexibility ও scalability বাড়ে।

বাস্তব উদাহরণ: Payment System

ধরা যাক আপনি একটি ই-কমার্স সাইটে বিভিন্ন পেমেন্ট গেটওয়ে (Bkash, Nagad, Paypal) ব্যবহার করতে চান। তাহলে Strategy Pattern ব্যবহার করে সেটি করা যাবে সহজেই।


<?php
// Step 1: Interface তৈরি করুন
interface PaymentStrategy {
    public function pay($amount);
}

// Step 2: বিভিন্ন স্ট্র্যাটেজি তৈরি করুন
class BkashPayment implements PaymentStrategy {
    public function pay($amount) {
        echo "Bkash দিয়ে " . $amount . " টাকা প্রদান করা হয়েছে।<br>";
    }
}

class NagadPayment implements PaymentStrategy {
    public function pay($amount) {
        echo "Nagad দিয়ে " . $amount . " টাকা প্রদান করা হয়েছে।<br>";
    }
}

class PaypalPayment implements PaymentStrategy {
    public function pay($amount) {
        echo "Paypal দিয়ে " . $amount . " টাকা প্রদান করা হয়েছে।<br>";
    }
}

// Step 3: Context ক্লাস তৈরি করুন
class PaymentContext {
    private $strategy;

    public function __construct(PaymentStrategy $strategy) {
        $this->strategy = $strategy;
    }

    public function setStrategy(PaymentStrategy $strategy) {
        $this->strategy = $strategy;
    }

    public function payNow($amount) {
        $this->strategy->pay($amount);
    }
}

// Step 4: ব্যবহার
$payment = new PaymentContext(new BkashPayment());
$payment->payNow(1000);

$payment->setStrategy(new NagadPayment());
$payment->payNow(1500);

$payment->setStrategy(new PaypalPayment());
$payment->payNow(2000);
?>
    

কী শিখলেন?

  • Interface ব্যবহার করে ভিন্ন ভিন্ন কাজের জন্য আলাদা Strategy define করা যায়।
  • নতুন পেমেন্ট মেথড যোগ করতে চাইলে শুধু একটি নতুন ক্লাস বানালেই হবে, বাকি কোডে কোনো পরিবর্তন লাগবে না।
  • কোড আরও সহজে maintain ও extendable করা যায়।

Interface ব্যবহার করে Strategy Pattern কোথায় উপকারী?

  • পেমেন্ট সিস্টেম
  • লগিং (file log, db log)
  • ইমেইল সেন্ডার (SMTP, API)
  • ডিসকাউন্ট ক্যালকুলেশন
  • File Uploader (local, S3, FTP)

উপসংহার

Interface-এর মাধ্যমে Strategy Pattern ব্যবহার করলে আপনি আপনার কোডকে আরও modular, maintainable এবং testable করতে পারবেন।

এটি Dependency Injection ও Open/Closed Principle-এর বাস্তব প্রয়োগ।


 

 

Leave a Reply