gpt4 book ai didi

java - java中的观察者模式,更好的方法?

转载 作者:行者123 更新时间:2023-11-30 06:27:39 26 4
gpt4 key购买 nike

下面的代码摘自另一个 SO 帖子,我想知道是否有更好的方法来编写这段代码,因为在每个实现的方法结束时都有一个循环通知所有监听器,这有点丑陋。如果这很愚蠢,请原谅我,我是 Java 的新手。

注意:我将在接口(interface)中实现不止一种方法,我将实现 5 个方法:

import java.util.*;

interface HelloListener {
public void someoneSaidHello();
}


class Initiater {
List<HelloListener> listeners = new ArrayList<HelloListener>();

public void addListener(HelloListener toAdd) {
listeners.add(toAdd);
}

public void sayHello() {
System.out.println("Hello!!");

// Notify everybody that may be interested.
for (HelloListener hl : listeners)
hl.someoneSaidHello();
}
}


class Responder implements HelloListener {
@Override
public void someoneSaidHello() {
System.out.println("Hello there...");
}
}

最佳答案

当我在学生时代实现观察者模式时,我把它做成一个抽象类:

import java.util.ArrayList;

/**
* The observer pattern.
* @author jiman
*/
public abstract class Observed {

private ArrayList<Observer> observers;

public Observed() { views = new ArrayList<Observer>(); }

public void registerObserver(Observer o) { observers.add(o); }

public void removeObserver(Observer o) { observers.remove(o); }

// call this method upon a mutation of the state of this object
public void notifyObservers() { for (Observer o : observers) o.update(); }

}

观察者会继承这个接口(interface),自己写更新方法。

public interface Observer {

public void update();

}

关于java - java中的观察者模式,更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13226469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com