だが、私はそのオブザーバーのリストで構成されたオブジェクトSubject
とint
フィールドがあるとしましょう:filedsの設定者のオブザーバーを更新するのは悪い習慣と考えられますか?
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
のフィールドのすべての「設定」操作後にそれらのすべてを通知したいと思います。私はstate
に新しい値を設定するたびに、私は少しのコードを変更し、更新したいので
Subject subject = new Subject();
subject.add(newObserver);
subject.setState(newState);
subject.notifyAllObservers();
しかし:このような操作を行うために、私が知っている最も一般的なコードは次のようなものです。
は民間へnotifyAllObservers()
アクセス修飾子変更:
private void notifyAllObservers() { ... code }
をそしてstate
のセッターに新しい余分な行を追加しました:
public void setState(int state) {
this.state = state;
notifyAllObservers();
}
は、上記の悪い習慣とみなさコードですか?
考えてみましょう。 –
(typo "オブザーバーのリスト" - 所有物?) –