您的位置:

用法介绍Java Observer模式

用法介绍Java Observer模式

更新:

JavaObserver是一种设计模式,它定义了对象之间的一对多依赖,当对象改变状态时,它会自动通知和更新的所有依赖

一、Java Observer模式基础

1、Observer模式主要用于实现分布式系统的事件服务和事件驱动架构。它主要由两类对象组成:被观察者(Subject)和观察者(Observer)。

// 被观察者
public class Subject {
    private Listobservers = new ArrayList();
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}

2、观察者(Observer)对更新接口进行定义,当被观察者状态发生变化时,该接口将被调用。

// 观察者
public interface Observer {
    void update(String message);
}

二、Java Observer模式实现步骤

1、第一,创建观察者界面和特定的观察者界面。观察者界面定义了一个更新的界面,特定的观察者类实现了观察者界面。

// 观察者接口
public interface Observer {
    void update(String message);
}

// 具体观察者类
public class ConcreteObserver implements Observer {
    public void update(String message) {
        System.out.println("ConcreteObserver get message: " + message);
    }
}

2、第二,创建观察者类别。观察者类别维护观察者名单,实现注册观察者、移除观察者、通知观察者等方法。

// 被观察者类
public class Subject {
    private Listobservers = new ArrayList();

    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }
    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}

三、Java相应的Observer类的使用

1、Java内置的Observer模式主要涉及java.util.javava接口和Observer.util.Observable类。Observable类是观察者类,Observer接口是观察者接口。在调用Observable类的notifyObservers()方法时,将通知所有已注册的观察者。

import java.util.Observable;
import java.util.Observer;

public class JavaObservable extends Observable {
    void change(String str) {
        setChanged();
        notifyObservers(str);
    }
}

public class JavaObserver implements Observer {
    @Override
    public void update(Observable o, Object arg) {
        System.out.println("Received response: " + arg);
    }
}

2、通过创建Observable子类和Observer实现类,使用Java内置的Observer模式,然后使用Observer实例注册Observable实例,最后通过Observable实例通知Observer实例。

public static void main(String args[]) {
    JavaObserver observer = new JavaObserver();
    JavaObservable observable = new JavaObservable();
    observable.addObserver(observer);
    observable.change("Hello, Observer!");
}