Mehrere Beobachter überwachen die Statusänderung eines Objekts.
Die überwachte Klasse enthält mehrere Observer-Instanzen, und jeder Observer verwendet die Methoden der Observer-Klasse, um den Status zu ändern.
Observer enthält überwachte Klassenobjekte </ font>
Überprüfen Sie mit der folgenden Klassenstruktur
Klasse | Erläuterung |
---|---|
Mediator.class | Objekte, die von jeder Observer-Klasse überwacht werden Speichern Sie eine Instanz jeder Observer-Klasse in einer Liste Instanz zur Liste hinzugefügt()Wenn ja, benachrichtigen Sie alle Beobachter über die Größe der Liste |
abstract Observer.class |
Halten Sie eine zu überwachende Mediator-Instanz Implementieren Sie die von Mediator verwendete Methode |
ob1.class~ob2.class | Implementierter Observer |
user(Main.class) | Funktionsprüfung |
Mediator.class
class Mediator{
List list = new ArrayList<Observer>();
void add(Observer obsvr){
list.add(obsvr);
notifyTo(list.size()); //NotifyTo, wenn die Liste aktualisiert wird()Lauf
}
void notifyTo(int size){
Iterator it = list.iterator();
while(it.hasNext()){
Observer ob = (Observer) it.next();
ob.update(size); //Aktualisierung jeder in List gespeicherten Observer-Klasse()Benachrichtigen mit
}
}
}
abstract_Oberver.class
abstract class Observer{
Mediator mediator = null;
int mediatorListSize = 0;
Observer(Mediator med){this.mediator=med;}
void update(int size){
mediatorListSize=size;
System.out.println(
mediatorListSize+":"+mediator.list.size()
);
}
}
java:ob1.class_ob2.class
class ob1 extends Observer{ob1(Mediator med){super(med);}}
class ob2 extends Observer{ob2(Mediator med){super(med);}}
user(Main.class)
public static void main(String[] args){
Mediator md = new Mediator();
md.add(new ob1(md));
md.add(new ob2(md));
}
Recommended Posts