Custom Factory এবং Transformer ব্যবহার

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Lazy এবং Transformed Collections |
140
140

Apache Commons Collections লাইব্রেরি বিভিন্ন ইউটিলিটি এবং ক্লাস সরবরাহ করে যা ডেটা ম্যানিপুলেশন এবং সংগ্রহের কার্যকারিতা উন্নত করে। এর মধ্যে দুটি গুরুত্বপূর্ণ উপাদান হল Factory এবং Transformer। এই দুইটি সাধারণভাবে functional programming প্যাটার্নে ব্যবহৃত হয় এবং ডেটার উপর বিভিন্ন পরিবর্তন বা রূপান্তর করতে সহায়ক। Custom Factory এবং Transformer ব্যবহার করে আপনি আরও কাস্টমাইজড এবং ফ্লেক্সিবল ডেটা স্ট্রাকচার এবং ট্রান্সফরমেশন অপারেশন তৈরি করতে পারেন।

১. Factory Interface এবং Custom Factory ব্যবহার

Factory একটি ডিজাইন প্যাটার্ন যা কোনো অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। Apache Commons Collections এর মধ্যে Factory ইন্টারফেস রয়েছে, যা নতুন অবজেক্ট তৈরি করতে সহায়তা করে। আপনি একটি Custom Factory তৈরি করতে পারেন যাতে কোনো নির্দিষ্ট ধরনের অবজেক্ট তৈরি করা যায়।

Factory Interface এর ধারণা

Factory একটি জেনেরিক ইন্টারফেস যা একটি T টাইপের অবজেক্ট তৈরি করে। এর প্রধান মেথড হল:

public interface Factory<T> {
    T create();
}

এখানে:

  • T হলো টাইপ প্যারামিটার, যা আপনার কাঙ্ক্ষিত অবজেক্টের টাইপকে নির্দেশ করে।
  • create() মেথডটি একটি নতুন অবজেক্ট তৈরি করে এবং ফেরত দেয়।

উদাহরণ: Custom Factory ব্যবহার করা

ধরা যাক, আপনি একটি String টাইপের অবজেক্ট তৈরি করতে একটি কাস্টম ফ্যাক্টরি তৈরি করতে চান।

import org.apache.commons.collections4.Factory;
import java.util.ArrayList;

public class CustomFactoryExample {
    public static void main(String[] args) {
        // Creating a custom factory to create new ArrayList objects
        Factory<ArrayList<String>> factory = ArrayList::new;

        // Using the factory to create a new ArrayList
        ArrayList<String> list = factory.create();
        
        // Adding some elements to the ArrayList
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        // Print the list
        System.out.println(list);  // Output: [apple, banana, cherry]
    }
}

এখানে:

  • Factory<ArrayList> তৈরি করা হয়েছে, যা একটি ArrayList অবজেক্ট তৈরি করবে।
  • ArrayList::new ব্যবহার করে একটি নতুন ArrayList অবজেক্ট তৈরি করা হয়েছে।

আউটপুট:

[apple, banana, cherry]

এটি দেখাচ্ছে কিভাবে একটি Custom Factory ব্যবহার করে ArrayList তৈরি করা হলো এবং সেটির মধ্যে মান যোগ করা হলো।

Custom Factory এর সুবিধা:

  1. Object Creation: আপনি একটি নির্দিষ্ট ধরণের অবজেক্ট তৈরি করতে Factory ইন্টারফেস ব্যবহার করতে পারেন।
  2. Decoupling: Factory প্যাটার্ন ব্যবহারে কোডের মধ্যে অবজেক্ট ক্রিয়েশন প্রক্রিয়া ডেকোপলড (decoupled) হয়, যা কোডকে আরো বেশি রিইউজেবল এবং সহজে পরিচালনযোগ্য করে তোলে।
  3. Flexibility: আপনি Factory ব্যবহার করে ডায়নামিকভাবে অবজেক্ট তৈরি করতে পারবেন এবং এটি কোডে পরিবর্তন না করে নতুন অবজেক্ট তৈরি করার সুবিধা প্রদান করবে।

২. Transformer Interface এবং Custom Transformer ব্যবহার

Transformer একটি ইন্টারফেস যা একটি ইনপুট ভ্যালুর উপর রূপান্তর প্রক্রিয়া প্রয়োগ করে এবং একটি আউটপুট ভ্যালু প্রদান করে। Apache Commons CollectionsTransformer ইন্টারফেসটি functional programming প্যাটার্নে ব্যবহৃত হয় যেখানে একটি ইনপুট ডেটাকে নতুন আউটপুট ডেটায় রূপান্তর করা হয়।

Transformer Interface এর ধারণা

Transformer একটি সাধারণ functional interface যা transform() মেথড সরবরাহ করে। এটি ইনপুট ভ্যালু নিয়ে সেটির উপর একটি নির্দিষ্ট রূপান্তর প্রক্রিয়া প্রয়োগ করে এবং আউটপুট ফেরত দেয়।

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

এখানে:

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

উদাহরণ: Custom Transformer ব্যবহার করা

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

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

public class CustomTransformerExample {
    public static void main(String[] args) {
        // Create a list of strings
        List<String> words = Arrays.asList("apple", "banana", "cherry");

        // Create a custom transformer to convert strings 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> ব্যবহার করা হয়েছে যা স্ট্রিং ইনপুট নিয়ে সেটিকে বড় হাতের অক্ষরে রূপান্তর করবে।
  • CollectionUtils.collect() মেথড ব্যবহার করে তালিকাটি রূপান্তরিত করা হয়েছে।

আউটপুট:

[APPLE, BANANA, CHERRY]

এটি দেখাচ্ছে কিভাবে একটি Transformer ব্যবহার করে একটি List এর সকল আইটেমকে বড় হাতের অক্ষরে রূপান্তর করা যায়।

Custom Transformer এর সুবিধা:

  1. Functional Transformation: Transformer ইন্টারফেস ব্যবহার করে আপনি ডেটার উপর একটি নির্দিষ্ট রূপান্তর প্রক্রিয়া প্রয়োগ করতে পারেন।
  2. Reusability: একবার তৈরি করা Transformer পুনরায় ব্যবহারযোগ্য হয় এবং ডেটার বিভিন্ন ধরনের রূপান্তর করতে ব্যবহার করা যায়।
  3. Decoupling: Transformer কোডের মধ্যে রূপান্তর লজিক আলাদা করে, ফলে কোডের রক্ষণাবেক্ষণ সহজ হয় এবং অন্যান্য কার্যাবলীর সঙ্গে একে ব্যবহার করা সহজ হয়।

৩. Factory এবং Transformer একসাথে ব্যবহার

Factory এবং Transformer একসাথে ব্যবহার করা যেতে পারে একটি কাস্টম ডেটা স্ট্রাকচার তৈরি করতে। উদাহরণস্বরূপ, আপনি একটি List তৈরি করতে পারেন, তারপর সেই তালিকার উপাদানগুলির উপর রূপান্তর প্রক্রিয়া প্রয়োগ করতে পারেন।

উদাহরণ: Factory এবং Transformer একসাথে ব্যবহার করা

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

public class FactoryAndTransformerExample {
    public static void main(String[] args) {
        // Create a factory to create new ArrayList objects
        Factory<List<String>> listFactory = ArrayList::new;

        // Use the factory to create a new list
        List<String> list = listFactory.create();
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        // Create a transformer to convert strings to uppercase
        Transformer<String, String> transformer = String::toUpperCase;

        // Transform the list using the transformer
        List<String> transformedList = (List<String>) CollectionUtils.collect(list, transformer);

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

এখানে:

  • Factory ব্যবহার করে একটি নতুন List তৈরি করা হয়েছে।
  • Transformer ব্যবহার করে তালিকার সকল স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করা হয়েছে।

আউটপুট:

[APPLE, BANANA, CHERRY]

এটি দেখায় কিভাবে Factory এবং Transformer একসাথে ব্যবহার করে একটি কাস্টম ডেটা স্ট্রাকচার তৈরি এবং রূপান্তর করা যায়।


সারাংশ

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

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

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

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

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