不同参数的事件通知最佳模式是观察者模式。
观察者模式是一种软件设计模式,用于在对象之间定义一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。在观察者模式中,被观察者(也称为主题或可观察对象)维护一个观察者列表,当主题的状态发生改变时,它会遍历观察者列表并调用每个观察者的相应方法。
以下是使用观察者模式实现不同参数的事件通知的代码示例:
import java.util.ArrayList;
import java.util.List;
// 定义观察者接口
interface Observer {
void update(int parameter);
}
// 定义被观察者接口
interface Subject {
void addObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(int parameter);
}
// 实现被观察者接口
class ConcreteSubject implements Subject {
private List 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(int parameter) {
for (Observer observer : observers) {
observer.update(parameter);
}
}
}
// 实现观察者接口
class ConcreteObserver implements Observer {
private String name;
public ConcreteObserver(String name) {
this.name = name;
}
@Override
public void update(int parameter) {
System.out.println(name + " received parameter: " + parameter);
}
}
// 测试代码
public class Main {
public static void main(String[] args) {
ConcreteSubject subject = new ConcreteSubject();
ConcreteObserver observer1 = new ConcreteObserver("Observer 1");
ConcreteObserver observer2 = new ConcreteObserver("Observer 2");
subject.addObserver(observer1);
subject.addObserver(observer2);
subject.notifyObservers(10); // 触发通知,传递参数10
}
}
上述代码中,ConcreteSubject
是被观察者的具体实现,它维护了一个观察者列表,并在状态发生改变时遍历观察者列表进行通知。ConcreteObserver
是观察者的具体实现,它实现了 Observer
接口的 update
方法来接收并处理通知。Main
类是测试代码,创建了一个被观察者和两个观察者,并将观察者添加到被观察者的观察者列表中。最后,通过调用被观察者的 notifyObservers
方法来触发通知,同时传递参数给观察者。运行代码后,观察者将收到并处理通知,打印出接收到的参数。
上一篇:不同参数的函数的并行处理