首頁 > Java > java教程 > 如何在 Java 中建立和使用自訂事件?

如何在 Java 中建立和使用自訂事件?

DDD
發布: 2024-12-02 00:40:09
原創
932 人瀏覽過

How to Create and Use Custom Events in Java?

Java 自訂事件建立

當嘗試建立物件互動涉及特定事件的回應機制時,觀察者模式作為可行的解決方案出現。利用這種模式,物件可以訂閱感興趣的事件,並且在這些事件發生時,它們將被通知採取適當的操作。

Java 實作

考慮以下程式碼片段作為範例:

import java.util.*;

// HelloEvent: Represents an event of "Hello"
class HelloEvent {
    private String message;
    
    public HelloEvent(String message) {
        this.message = message;
    }
    
    public String getMessage() {
        return message;
    }
}

// HelloListener: Interface for objects interested in "Hello" events
interface HelloListener {
    void onHello(HelloEvent event);
}

// Initiater: Publishes "Hello" events
class Initiater {
    private List<HelloListener> listeners = new ArrayList<>();
    
    public void addListener(HelloListener listener) {
        listeners.add(listener);
    }
    
    public void sayHello(String message) {
        HelloEvent event = new HelloEvent(message);
        
        for (HelloListener listener : listeners) {
            listener.onHello(event);
        }
    }
}

// Responder: Subscribes to "Hello" events
class Responder implements HelloListener {
    @Override
    public void onHello(HelloEvent event) {
        System.out.println("Hello there! " + event.getMessage());
    }
}

public class CustomEventExample {
    public static void main(String[] args) {
        Initiater initiater = new Initiater();
        Responder responder = new Responder();
        
        initiater.addListener(responder);
        
        initiater.sayHello("Good morning!");  // Prints "Hello there! Good morning!"
    }
}
登入後複製

說明

說明

說明說明說明說明說明說明說明在說明此範例中,HelloEvent 類別封裝了事件資料(在本例中為問候訊息)。 HelloListener 介面定義了訂閱者必須實作的方法來處理事件通知。 Initiator代表觸發事件並維護訂閱者清單的物件。 Responder 是在「Hello」事件發生時回應的訂閱者。 CustomEventExample 類別示範如何建立、發布和訂閱自訂事件。當發起者呼叫 sayHello 方法時,它會觸發一個 HelloEvent,該事件由回應者接收並處理。 這種方法提供了一種靈活的方式來在 Java 應用程式中的物件之間建立事件驅動的通訊。

以上是如何在 Java 中建立和使用自訂事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板