MVC がどのように機能するかを示す良い例は、Swing フレームワークです。すべての状態変化は 1 種類のイベントを発生させ、それらの変化について知りたいオブジェクトはリスナー (別名オブザーバー) を実装します。
したがって、要約すると、次のように、StatisticsListener という 1 つのインターフェイスを作成する必要があります。
public interface StatisticsListener {
public void statisticsChanged(StatisticsEvent evt);
}
イベント StatisticsEvent を使用すると、次のようになります。
public class StatisticsEvent {
private final Statistics changedStatistics;
public StatisticsEvent(Statistics changedStatistics){
this.changedStatistics = changedStatistics;
}
public Statistics getChangedStatistics(){
return this.changedStatistics;
}
}
... そして、統計を処理するクラスで、イベントを発生させます。
public class ClassThatHandlesStatistics {
private final List<StatisticsListener> listeners = new CopyOnWriteArrayList<StatisticsListener>();
public void doSomething(){
Statistics changed ... //do your logic
fireStatisticsChanged(new StatisticsEvent(changed));
}
protected void fireStatisticsChanged(StatisticsEvent evt){
for (StatisticsListener listener : listeners){
listener.statisticsChanged(evt);
}
}
}
このようなもの ;-)