Home > Java > javaTutorial > What are the implementation methods of observer pattern in java framework?

What are the implementation methods of observer pattern in java framework?

WBOY
Release: 2024-06-03 17:05:00
Original
600 people have browsed it

The observer pattern in the Java framework defines behavior through interfaces and abstract classes (1); Subject and Observer classes implement management and response behavior (2); Subject provides subscription and cancellation methods, maintains observer collections, and notifies observers (3). In the example, Subject manages observers and triggers events (4), and ConcreteObserver responds to events (5).

What are the implementation methods of observer pattern in java framework?

How to implement the observer pattern in the Java framework

The observer pattern is a design pattern that allows objects to subscribe and detect Listen to events from other objects. When a subscribed object changes state, it notifies all subscribed objects.

In the Java framework, the observer pattern is usually implemented in the following ways:

1. Interfaces and abstract classes

  • define aObservable Interface or abstract class that provides the behavior of registering, unregistering and notifying subscribers.
  • Define an Observer interface or abstract class and declare the methods to be implemented by the subscriber.

2. Subject and Observer classes

  • Subject Class implements Observable interface or extensionObservable Abstract class and provides observer management functions.
  • Observer The class implements the Observer interface or extends the Observer abstract class and defines the logic to respond to events.

3. Bind Subject and Observer

  • The Subject class provides methods that allow Observer to subscribe to and unregister events.
  • The Subject class maintains a collection of Observers and notifies all registered Observers when an event occurs.

Practical case

Using the Java framework, we can implement the observer pattern through the following example:

// Observable 接口表示观察者管理功能
public interface Observable {

    void addObserver(Observer observer);

    void removeObserver(Observer observer);

    void notifyObservers();
}

// 抽象 Observer 类定义被调用的方法
public abstract class Observer {

    public abstract void update();
}

// Subject 类实现 Observable 接口
public class Subject implements Observable {

    private List<Observer> observers = new ArrayList<>();

    @Override
    public void addObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}

// ConcreteObserver 类实现 Observer 接口
public class ConcreteObserver extends Observer {

    @Override
    public void update() {
        // 响应事件的逻辑
    }
}

// Main 类用于测试
public class Main {

    public static void main(String[] args) {
        Subject subject = new Subject();
        Observer observer1 = new ConcreteObserver();
        Observer observer2 = new ConcreteObserver();

        subject.addObserver(observer1);
        subject.addObserver(observer2);

        // 触发事件
        subject.notifyObservers();
    }
}
Copy after login

In this example, Subject The class is an observable object and provides observer management functions. ConcreteObserver The class is a concrete observer that defines the logic of responding to events. When an event occurs on the Subject object, it will notify all registered observers and trigger actions in response to the event.

The above is the detailed content of What are the implementation methods of observer pattern in java framework?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template