Код ниже был взят из другого сообщения SO, мне было интересно, есть ли лучший способ написать этот код, потому что его вид уродливый, чтобы иметь цикл, который уведомляет всех слушателей в конце каждого реализованного метода. Если это глупо простить меня, я новичок в Java.Шаблон наблюдателя в java, лучший способ?
Примечание: Я буду реализовывать несколько методов в интерфейсе, у меня будет реализовано 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...");
}
}
Я бы сказал, что это, вероятно, самое простое решение, доступное вам. У вас может быть очередь, в которой события нажимаются на них, а какой-то диспетчер уведомляет зарегистрированных слушателей, но опять же вам нужен цикл ... – MadProgrammer