উদাহরণ সহ Subject তৈরি এবং ব্যবহার

Subject এর ধারণা - আরএক্সজাভা (RxJava) - Java Technologies

323

Subject RxJava-র একটি গুরুত্বপূর্ণ component যা Observable এবং Observer উভয়ের মতো কাজ করে। এটি একই সময়ে data emit (প্রকাশ) এবং consume (গ্রহণ) করতে পারে।


Subject-এর ধরন

RxJava-তে বিভিন্ন প্রকারের Subject রয়েছে, এবং প্রতিটির নিজস্ব ব্যবহার ক্ষেত্রে আলাদা বৈশিষ্ট্য থাকে। প্রধান Subject-গুলো হল:

  1. PublishSubject
  2. BehaviorSubject
  3. ReplaySubject
  4. AsyncSubject

1. PublishSubject

PublishSubject শুধুমাত্র subscribe হওয়ার পরবর্তী ডেটা emit করে। এটি পূর্ববর্তী ডেটা সংরক্ষণ করে না।

উদাহরণ:

import io.reactivex.subjects.PublishSubject;

public class PublishSubjectExample {
    public static void main(String[] args) {
        PublishSubject<String> subject = PublishSubject.create();

        // প্রথম Observer
        subject.subscribe(item -> System.out.println("Observer 1: " + item));

        subject.onNext("Hello");
        subject.onNext("RxJava");

        // দ্বিতীয় Observer (পরে subscribe হয়েছে)
        subject.subscribe(item -> System.out.println("Observer 2: " + item));

        subject.onNext("Subject");
        subject.onComplete();
    }
}

আউটপুট:

Observer 1: Hello
Observer 1: RxJava
Observer 1: Subject
Observer 2: Subject

2. BehaviorSubject

BehaviorSubject সর্বশেষ emit হওয়া ডেটা সংরক্ষণ করে এবং নতুন subscribers-দের সেটি প্রদান করে।

উদাহরণ:

import io.reactivex.subjects.BehaviorSubject;

public class BehaviorSubjectExample {
    public static void main(String[] args) {
        BehaviorSubject<String> subject = BehaviorSubject.create();

        subject.onNext("Initial");

        // প্রথম Observer
        subject.subscribe(item -> System.out.println("Observer 1: " + item));

        subject.onNext("Hello");
        subject.onNext("RxJava");

        // দ্বিতীয় Observer (পরে subscribe হয়েছে)
        subject.subscribe(item -> System.out.println("Observer 2: " + item));

        subject.onNext("Subject");
        subject.onComplete();
    }
}

আউটপুট:

Observer 1: Initial
Observer 1: Hello
Observer 1: RxJava
Observer 1: Subject
Observer 2: RxJava
Observer 2: Subject

3. ReplaySubject

ReplaySubject সমস্ত emit হওয়া ডেটা সংরক্ষণ করে এবং নতুন subscribers-দের সব ডেটা প্রদান করে।

উদাহরণ:

import io.reactivex.subjects.ReplaySubject;

public class ReplaySubjectExample {
    public static void main(String[] args) {
        ReplaySubject<String> subject = ReplaySubject.create();

        subject.onNext("Initial");
        subject.onNext("Hello");

        // প্রথম Observer
        subject.subscribe(item -> System.out.println("Observer 1: " + item));

        subject.onNext("RxJava");

        // দ্বিতীয় Observer (পরে subscribe হয়েছে)
        subject.subscribe(item -> System.out.println("Observer 2: " + item));

        subject.onNext("Subject");
        subject.onComplete();
    }
}

আউটপুট:

Observer 1: Initial
Observer 1: Hello
Observer 1: RxJava
Observer 1: Subject
Observer 2: Initial
Observer 2: Hello
Observer 2: RxJava
Observer 2: Subject

4. AsyncSubject

AsyncSubject শুধুমাত্র শেষ emit হওয়া ডেটা প্রদান করে, এবং onComplete() কল করার পর এটি সক্রিয় হয়।

উদাহরণ:

import io.reactivex.subjects.AsyncSubject;

public class AsyncSubjectExample {
    public static void main(String[] args) {
        AsyncSubject<String> subject = AsyncSubject.create();

        subject.onNext("Initial");
        subject.onNext("Hello");
        subject.onNext("RxJava");

        // প্রথম Observer
        subject.subscribe(item -> System.out.println("Observer 1: " + item));

        subject.onNext("Subject");
        subject.onComplete();

        // দ্বিতীয় Observer (onComplete এর পরে subscribe হয়েছে)
        subject.subscribe(item -> System.out.println("Observer 2: " + item));
    }
}

আউটপুট:

Observer 1: Subject
Observer 2: Subject

উপসংহার

RxJava-র Subject-গুলো বিভিন্ন প্রোগ্রামিং পরিস্থিতিতে ব্যবহারের জন্য অত্যন্ত উপযোগী।

Subject প্রকারব্যবহার
PublishSubjectশুধুমাত্র subscribe হওয়ার পর emit হওয়া ডেটা প্রদান করে।
BehaviorSubjectসর্বশেষ emit হওয়া ডেটা সংরক্ষণ করে এবং নতুন subscribers-দের সেটি প্রদান করে।
ReplaySubjectসমস্ত emit হওয়া ডেটা সংরক্ষণ করে এবং নতুন subscribers-দের প্রদান করে।
AsyncSubjectশুধুমাত্র শেষ emit হওয়া ডেটা প্রদান করে।

প্রতিটি Subject নির্দিষ্ট পরিস্থিতিতে ব্যবহার করলে data streams পরিচালনা আরও কার্যকর হয়।

Content added By
Promotion

Are you sure to start over?

Loading...