比方说,我有一个对象Subject
其中包括它的观察者的列表和int
场:更新fileds的setter中的观察者被认为是不好的做法?
package example.template.pattern.observer;
import java.util.ArrayList;
import java.util.List;
public class Subject {
private List<Observer> observers = new ArrayList<Observer>();
private int state;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public void attach(Observer observer) {
observers.add(observer);
}
public void notifyAllObservers() {
for (Observer observer : observers) {
observer.update();
}
}
}
我想state
的场的每一个“设置”操作后,通知所有的人。最常见的代码,我已经知道了执行这样的操作是这样的:
Subject subject = new Subject();
subject.add(newObserver);
subject.setState(newState);
subject.notifyAllObservers();
但因为我想更新我的每一个新的值设置为state
时间我改变一点点代码。
改变notifyAllObservers()
访问修饰符私人:
private void notifyAllObservers() { ... code }
,并增加了新的额外的行到state
的二传手:
public void setState(int state) {
this.state = state;
notifyAllObservers();
}
是上面认为是不好的做法的代码?
这看起来好像没什么问题。 –
(错字“观察员列表” - 占有它的?) –