觀察者模式需要壹個主題和壹個或多個觀察者。
主題類中有壹個觀察者集合。
當調用topic類的壹些方法時,集合會自動循環,並調用觀察者的方法。
例如:
公共?班級?count主語?器物?ICountSubject?{
私人?列表& lt觀察者& gt?列表;
CountSubject()?{
列表?=?新的?ArrayList & lt觀察者& gt();
}
@覆蓋
公共?作廢?count(int?num)?{
為了什麽?(int?I = 0;我& ltnumi++)?{
system . out . println(this . getclass()。getName()?+?"--> "?+?I);
this . notify observer(I);
}
}
公共?作廢?addObserver(觀察者?obs)?{
this . list . add(OBS);
}
公共?布爾?removeObserver(觀察者?obs)?{
回歸?this . list . remove(OBS);
}
公共?作廢?removeAllObservers()?{
this . list . clear();
}
公共?作廢?notifyObserver(int?我)?{
為了什麽?(int?a = 0;a & ltlist . size();a++)?{
觀察者?o?=?list . get(a);
o .更新(壹);
}
}
}客戶端調用時,首先要初始化壹個或多個觀察者,然後再添加到subject對象中。
然後調用subject對象的方法。觀察者的方法是在主體對象的方法中自動調用的。