Transformer ইন্টারফেস এবং এর ব্যবহার

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Transformer এবং Closure |
104
104

Apache Commons Collections লাইব্রেরি Transformer ইন্টারফেস সরবরাহ করে যা একটি functional transformation প্রদান করে। এটি একটি জেনেরিক ইন্টারফেস যা একটি ইনপুট ভ্যালু নিয়ে তার উপর একটি নির্দিষ্ট রূপান্তর প্রক্রিয়া প্রয়োগ করে এবং একটি আউটপুট ভ্যালু ফেরত দেয়। এই ইন্টারফেসটি সাধারণত map, filter, অথবা transform অপারেশনগুলোতে ব্যবহৃত হয়।

Transformer ইন্টারফেস মূলত input ভ্যালুর উপর transformation প্রক্রিয়া প্রয়োগ করে একটি নতুন output তৈরি করে। এটি functional programming ধারণার মতো কাজ করে যেখানে একটি অবজেক্ট বা ভ্যালুর উপর নির্দিষ্ট ফাংশন প্রয়োগ করা হয়।

১. Transformer ইন্টারফেসের ধারণা

Transformer একটি সাধারণ functional interface যা ইনপুট ভ্যালু নিয়ে একটি আউটপুট ভ্যালু তৈরি করার জন্য একটি transform() মেথড ডিফাইন করে। এটি ইনপুটের ধরণ ও আউটপুটের ধরণ একই হতে পারে বা ভিন্নও হতে পারে।

Transformer ইন্টারফেসের সিগনেচার:

public interface Transformer<I, O> {
    O transform(I input);
}

এখানে:

  • I: ইনপুট টাইপ।
  • O: আউটপুট টাইপ।
  • transform(I input): একটি মেথড যা ইনপুট গ্রহণ করে এবং আউটপুট ফেরত দেয়।

২. Transformer ইন্টারফেসের ব্যবহার

Transformer ইন্টারফেসটি সাধারণত map, filter বা transform অপারেশনগুলোতে ব্যবহার করা হয়, যেখানে ডেটা স্ট্রাকচারের উপাদানগুলো পরিবর্তন বা রূপান্তর করা হয়। এটি মূলত Java Collections বা Streams API এর মতো কনটেইনার থেকে ডেটা ট্রান্সফর্মেশন করার জন্য ব্যবহার করা যায়।

উদাহরণ: Transformer ব্যবহার করে String রূপান্তর

ধরা যাক, আমরা একটি String তালিকা থেকে প্রতিটি স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করতে চাই। এর জন্য আমরা Transformer ইন্টারফেস ব্যবহার করতে পারি।

import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;

public class TransformerExample {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("apple", "banana", "cherry");

        // Create a transformer that converts string to uppercase
        Transformer<String, String> transformer = new Transformer<String, String>() {
            @Override
            public String transform(String input) {
                return input.toUpperCase();
            }
        };

        // Use CollectionUtils to transform the list using the transformer
        List<String> transformedWords = (List<String>) CollectionUtils.collect(words, transformer);

        // Print the transformed list
        System.out.println(transformedWords);  // Output: [APPLE, BANANA, CHERRY]
    }
}

এখানে:

  • Transformer<String, String> ইন্টারফেস ব্যবহার করে একটি transform() মেথড তৈরি করা হয়েছে যা একটি String কে বড় হাতের অক্ষরে রূপান্তর করে।
  • CollectionUtils.collect() মেথডটি transformer ব্যবহার করে লিস্টের প্রতিটি আইটেমকে রূপান্তর করে এবং একটি নতুন লিস্ট তৈরি করে।

আউটপুট:

[APPLE, BANANA, CHERRY]

৩. Transformer ব্যবহার করে Object রূপান্তর

আপনি Transformer ইন্টারফেস ব্যবহার করে জটিল অবজেক্টগুলির উপরও রূপান্তর প্রয়োগ করতে পারেন। যেমন, আপনি একটি Person অবজেক্টের age ফিল্ড পরিবর্তন করতে চাইছেন।

উদাহরণ: Object রূপান্তর

import org.apache.commons.collections4.Transformer;

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}

public class TransformerObjectExample {
    public static void main(String[] args) {
        Person person = new Person("John", 25);

        // Create a transformer that increases the age by 5 years
        Transformer<Person, Person> transformer = new Transformer<Person, Person>() {
            @Override
            public Person transform(Person input) {
                return new Person(input.getName(), input.getAge() + 5);
            }
        };

        // Apply the transformer to the person object
        Person transformedPerson = transformer.transform(person);

        // Print the transformed person
        System.out.println(transformedPerson);  // Output: Person{name='John', age=30}
    }
}

এখানে:

  • Transformer<Person, Person> ব্যবহার করে Person অবজেক্টে বয়স বাড়ানোর জন্য একটি ট্রান্সফর্মার তৈরি করা হয়েছে।
  • transform() মেথডে Person অবজেক্টের বয়স ৫ বছর বাড়িয়ে নতুন অবজেক্ট তৈরি করা হয়েছে।

আউটপুট:

Person{name='John', age=30}

৪. Transformer এর সুবিধা

  • Functional Transformation: আপনি কোনো ডেটা স্ট্রাকচার বা অবজেক্টের উপর সহজেই functional transformation প্রয়োগ করতে পারেন।
  • Decoupling: Transformer এক ধরনের decoupling তৈরি করে, কারণ আপনি সহজেই কোনো ডেটা স্ট্রাকচার বা অবজেক্টে পরিবর্তন করতে পারেন, যেখানে ডেটার মূল কনটেক্সট বা স্ট্রাকচার অপরিবর্তিত থাকে।
  • Reusability: একটি transformer ইন্টারফেস একবার লিখে বার বার ব্যবহার করা যায় বিভিন্ন ডেটা টাইপের জন্য।
  • Readability and Maintainability: Transformer কোডের পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা বাড়ায়, কারণ এটি ফাংশনাল প্রোগ্রামিং ধারায় ডেটার রূপান্তর প্রদানের সুযোগ দেয়।

৫. Transformer এর সাথে অন্যান্য Utilities

  • CollectionUtils.collect(): এটি একটি নির্দিষ্ট Transformer ব্যবহার করে একটি Collection এর উপাদানগুলোকে রূপান্তর করতে সাহায্য করে। এটি খুবই উপকারী যখন আপনাকে একটি লিস্ট বা সেটের উপর একই ধরনের রূপান্তর প্রক্রিয়া প্রয়োগ করতে হয়।

    উদাহরণ:

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
    Transformer<Integer, Integer> squareTransformer = number -> number * number;
    List<Integer> squaredNumbers = (List<Integer>) CollectionUtils.collect(numbers, squareTransformer);
    System.out.println(squaredNumbers);  // Output: [1, 4, 9, 16]
    

সারাংশ

Transformer ইন্টারফেস Apache Commons Collections লাইব্রেরির একটি গুরুত্বপূর্ণ অংশ, যা functional transformation এর মাধ্যমে ডেটার রূপান্তর করার সুবিধা দেয়। এটি সাধারণত map অথবা transform অপারেশনগুলোতে ব্যবহৃত হয়, যেখানে ডেটা সংগ্রহের উপাদানগুলোকে পরিবর্তন করা হয়। Transformer এর মাধ্যমে আপনি যে কোনো অবজেক্ট বা ডেটা স্ট্রাকচারে নির্দিষ্ট রূপান্তর প্রক্রিয়া প্রয়োগ করতে পারেন, যেমন স্ট্রিংকে ক্যাপিটালাইজ করা, বয়স পরিবর্তন করা, অথবা সংখ্যা স্কয়ার করা। এটি সহজ, কার্যকরী এবং পুনরায় ব্যবহারযোগ্য কোড লেখার সুযোগ দেয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion