Strategy Pattern Lambda দিয়ে ইমপ্লিমেন্ট করা

Functional Programming এর Design Patterns - জাভা ফাংশনাল প্রোগ্রামিং (Java Functional Programming) - Java Technologies

301

Strategy Pattern একটি Behavioral Design Pattern যা বিভিন্ন এলগরিদম বা আচরণের জন্য একটি ফ্যামিলি প্রদান করে এবং এগুলিকে রানটাইমে ক্লায়েন্ট দ্বারা নির্বাচনযোগ্য করে তোলে। এই প্যাটার্নটি সাধারণত, এলগরিদম বা কার্যপ্রণালীর পরিবর্তনযোগ্যতা বজায় রাখার জন্য ব্যবহৃত হয়।

Functional Programming এর মাধ্যমে, বিশেষ করে Lambda Expressions ব্যবহার করে, আমরা Strategy Pattern-কে আরও সংক্ষিপ্ত এবং পরিষ্কারভাবে ইমপ্লিমেন্ট করতে পারি।

Strategy Pattern সাধারণভাবে কিভাবে কাজ করে?

Strategy Pattern এর মূল বিষয় হলো:

  1. একটি Context ক্লাস থাকে যা নির্দিষ্ট কৌশল (strategy) ব্যবহার করে।
  2. Strategy Interface থাকে যা বিভিন্ন কৌশল বা অপারেশন ডিফাইন করে।
  3. বিভিন্ন কৌশল বা আচরণের জন্য আলাদা Concrete Strategy ক্লাস থাকে।

এখন, Lambda Expressions ব্যবহার করে আমরা এই প্যাটার্নটিকে আরও compact এবং মডুলারভাবে বাস্তবায়ন করতে পারি। এতে আমরা কৌশল (strategy) হিসাবে ফাংশন বা ল্যাম্বডা ব্যবহার করতে পারব, যা আমাদের কোডকে আরও পরিষ্কার এবং স্বচ্ছ রাখে।

Strategy Pattern Lambda দিয়ে ইমপ্লিমেন্ট করা:

ধরা যাক, আমাদের একটি কৌশল (strategy) সিলেকশন রয়েছে, যেখানে দুটি কৌশল রয়েছে:

  1. Add: দুইটি সংখ্যার যোগফল।
  2. Multiply: দুইটি সংখ্যার গুণফল।

Step 1: Strategy Interface

আমরা একটি Strategy Interface তৈরি করব, যা একটি সাধারণ মেথড সিগনেচার থাকবে, যেমন execute():

@FunctionalInterface
public interface Strategy {
    int execute(int a, int b);
}

এখানে, Strategy ইন্টারফেস একটি Functional Interface যা execute() মেথডটিকে ডিফাইন করে, যার মাধ্যমে দুটি সংখ্যার উপর কোনো একটি অপারেশন (যেমন, যোগফল বা গুণফল) প্রয়োগ করা হবে।

Step 2: Concrete Strategies (Lambda Expressions)

এবার, আমরা Lambda Expressions ব্যবহার করে কৌশলগুলি সংজ্ঞায়িত করব। এই কৌশলগুলি হবে Strategy ইন্টারফেসের implementations:

public class StrategyPatternLambdaExample {

    public static void main(String[] args) {
        
        // Add strategy using Lambda Expression
        Strategy addStrategy = (a, b) -> a + b;
        
        // Multiply strategy using Lambda Expression
        Strategy multiplyStrategy = (a, b) -> a * b;

        // Context that uses the strategy
        System.out.println("Addition: " + executeOperation(5, 3, addStrategy));        // Output: 8
        System.out.println("Multiplication: " + executeOperation(5, 3, multiplyStrategy)); // Output: 15
    }

    // Method to execute operation based on strategy
    public static int executeOperation(int a, int b, Strategy strategy) {
        return strategy.execute(a, b);
    }
}

Step 3: Explanation

  • Strategy Interface: Strategy ইন্টারফেস একটি সাধারণ functional interface যা execute() মেথডটিকে ডিফাইন করে।
  • Lambda Expressions:
    • addStrategy: এই ল্যাম্বডা এক্সপ্রেশনটি দুইটি সংখ্যার যোগফল বের করার কৌশল।
    • multiplyStrategy: এই ল্যাম্বডা এক্সপ্রেশনটি দুইটি সংখ্যার গুণফল বের করার কৌশল।
  • Context: executeOperation() মেথডটি কৌশল নির্বাচন করে এবং তাকে প্রয়োগ করে। এটি Strategy ইন্টারফেসের একটি ইনস্ট্যান্স নেবে এবং কৌশলটি প্রয়োগ করবে।

Output:

Addition: 8
Multiplication: 15

Lambda Expressions দিয়ে Strategy Pattern এর সুবিধা:

  1. Compact and Readable Code: ল্যাম্বডা এক্সপ্রেশনগুলি কোডকে সংক্ষিপ্ত এবং পরিষ্কার করে তোলে। আপনি পৃথক কনক্রিট কৌশল ক্লাস তৈরি না করেও কৌশল সংজ্ঞায়িত করতে পারেন।
  2. No Boilerplate Code: কৌশল ক্লাসের জন্য আলাদা Concrete Strategy তৈরি করার প্রয়োজন নেই, যা সাধারণ Strategy Pattern-এ থাকতে পারে।
  3. Flexibility: কৌশলগুলি দ্রুত পরিবর্তন করা যায় এবং প্রয়োজনে নতুন কৌশলও সহজে যোগ করা যায়।
  4. Functional Style: ফাংশনাল প্রোগ্রামিং কনসেপ্টে কৌশল বা আচরণ হিসেবে Lambda Expressions ব্যবহারের মাধ্যমে আরও ফাংশনাল এবং মডুলার কোড লেখা সম্ভব হয়।

সারাংশ:

Lambda Expressions ব্যবহার করে Strategy Pattern কে Functional Programming স্টাইলে ইমপ্লিমেন্ট করা যায়, যা কোডকে আরও কমপ্যাক্ট, রিডেবল এবং মডুলার করে তোলে। এখানে, Strategy ইন্টারফেসের মাধ্যমে বিভিন্ন কৌশল এবং তাদের প্রয়োগ করা হয়েছে, যেখানে ল্যাম্বডা এক্সপ্রেশনগুলি কৌশলগুলির আচরণ বাস্তবায়ন করেছে। Lambda এর মাধ্যমে, আপনি সহজে নতুন কৌশল সংজ্ঞায়িত করতে পারেন এবং কোডের নমনীয়তা ও পরিষ্কারতা নিশ্চিত করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...