>Java >java지도 시간 >관찰자 패턴을 사용하여 Java에서 사용자 정의 이벤트를 어떻게 구현할 수 있습니까?

관찰자 패턴을 사용하여 Java에서 사용자 정의 이벤트를 어떻게 구현할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-21 18:00:18194검색

How Can I Implement Custom Events in Java Using the Observer Pattern?

Java에서 사용자 정의 이벤트 만들기

사용자 정의 이벤트는 구성 요소가 특정 트리거를 기반으로 서로 통신할 수 있도록 하는 많은 프로그래밍 시나리오에서 없어서는 안 될 요소입니다. 이 글의 목표는 다음과 같습니다.

문제 설명

특정 이벤트를 기반으로 개체 간의 상호 작용을 촉진하기 위해 Java에서 사용자 정의 이벤트를 어떻게 구현할 수 있습니까?

솔루션

Observer 디자인 패턴은 사용자 정의 관리를 위한 우아한 솔루션을 제공합니다. 자바의 이벤트. Observer 패턴의 개요는 다음과 같습니다.

  • Observable: 이벤트 구독자를 관리하는 클래스에 대한 인터페이스를 정의합니다.
  • Observer: 이벤트에 대한 알림을 받는 클래스에 대한 인터페이스를 정의합니다. observables.

샘플 구현

다음 코드 조각은 Observer 패턴을 사용하여 사용자 정의 이벤트를 생성하는 방법을 보여줍니다.

import java.util.*;

// Observer interface - defines what an Observer should respond to
interface HelloListener {
    void someoneSaidHello();
}

// Observable class - defines how an Observable manages Observers
class Initiater {
    private List<HelloListener> listeners = new ArrayList<>();

    // Method to add observers
    public void addListener(HelloListener toAdd) {
        listeners.add(toAdd);
    }

    // Method to notify observers
    public void sayHello() {
        System.out.println("Hello!!");
        for (HelloListener hl : listeners) {
            hl.someoneSaidHello();
        }
    }
}

// Observer class - defines how an Observer responds to events
class Responder implements HelloListener {
    @Override
    public void someoneSaidHello() {
        System.out.println("Hello there...");
    }
}

// Main class
class Test {
    public static void main(String[] args) {
        Initiater initiater = new Initiater();
        Responder responder = new Responder();

        initiater.addListener(responder);
        initiater.sayHello();
    }
}

실행

당신이 할 때 위 코드를 실행하면 개시자(관찰 가능) 및 응답자(관찰자)에 대한 개체가 생성됩니다. Initiater는 Responder를 관찰자로 추가하고 "hello" 이벤트(sayHello())가 발생하면 Responder에게 알림이 전송되고 할당된 작업으로 응답합니다. 이는 Observer 패턴을 사용하여 Java에서 사용자 정의 이벤트를 구현하는 방법을 보여줍니다.

위 내용은 관찰자 패턴을 사용하여 Java에서 사용자 정의 이벤트를 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.