CodeBlanks Logo Icon CodeBlanks

Reactive katmanı

Flow API ile reaktif akış yazarsın.

reaktif yayın katmanı

Reaktif katman, veriyi iterek (push) yayan bir model kurar. Subscriber arabirimi onNext(String item) metoduyla öğeleri tüketir. SimplePublisher abone listesi tutar; publish her aboneye onNext çağrısı yapar.

Bu, reaktif akışların (Reactive Streams) özüdür: yayıcı, abonelerine öğe iter. Harici bir kütüphane olmadan düz Java ile kurulur.

fonksiyonel arabirim ve lambda

Subscriber tek soyut metotlu bir arabirimdir; yani fonksiyonel arabirim. Bu yüzden anonim sınıf yerine lambda ile yazılabilir: s -> System.out.println("got: " + s). Derleyici, hedef türden s'in String olduğunu çıkarır.

Bu, kodu kısaltır ve okunurluğu artırır. subscribe metodu bir Subscriber bekler; lambda otomatik olarak ona dönüştürülür.

Uygulama Subscriber ve SimplePublisher sınıflarını yaz

Üstteki yapıya interface Subscriber ekle; void onNext(String item); metodu olsun. class SimplePublisher tanımla; aboneleri bir listede tutsun, void subscribe(Subscriber s) metodu abone eklesin, void publish(String item) metodu her aboneye s.onNext(item) çağırsın. main içinde SimplePublisher p = new SimplePublisher(); oluştur, p.subscribe(s -> System.out.println("got: " + s)); ile abone ol ve p.publish("hello"); çağır.

Başlangıç kodu

Main.java
@interface Service {}

@Service
class HelloService {
    String greet() { return "hello"; }
}

public class Main {
    public static void main(String[] args) {
        HelloService s = new HelloService();
        System.out.println("service ready: " + s.greet());
    }
}

Örnek çözüm

Main.java
@interface Service {}

@Service
class HelloService {
    String greet() { return "hello"; }
}

interface Subscriber {
    void onNext(String item);
}

class SimplePublisher {
    java.util.List<Subscriber> subs = new java.util.ArrayList<>();
    void subscribe(Subscriber s) { subs.add(s); }
    void publish(String item) {
        for (Subscriber s : subs) s.onNext(item);
    }
}

public class Main {
    public static void main(String[] args) {
        SimplePublisher p = new SimplePublisher();
        p.subscribe(s -> System.out.println("got: " + s));
        p.publish("hello");
    }
}

Beklenen çıktı

got: hello

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 abone metodunu tamamla

Soru
void ____(String item);
Cevap
void onNext(String item);

Açıklama: void onNext(String item); abone metodudur.

2 Reaktif akışta Subscriber ne yapar?

  • Dosya açar
  • Sınıfı derler
  • Çöp toplar
  • Öğeleri tüketir Doğru cevap

Açıklama: Subscriber, onNext metoduyla yayınlanan öğeleri tüketir.

3 reaktif öğeleri eşleştir

Kavram Anlamı
Publisher Yayın yapan
Subscriber Abone olan
onNext Öğe olayı
subscribe Abonelik ekleme

Uzman bölümündeki tüm dersler