Pierwsze pytanie: po co używać do tego interfejsu Javowego, skoro można to samemu łatwo napisać?
Drugie pytanie: jak użyć javowych interfejsów do zainstalowania obserwatora?
Zrobiłem tak:
// klasa abstrakcyjna obserwatora --------------------------------------------------
public abstract class Obserwator {
public abstract void update();
}
// obserwator -------------------------------------------------------------------------------
public class ObserwatorKrzysio extends Obserwator {
@Override
public void update() {
System.out.println("Zaktualizowano magazyn, biegnij do sklepu Krzysiu");
}
}
// jedziemy z koksem -----------------------------------------------------------------
import java.util.ArrayList;
import java.util.List;
public class Magazyn {
private int ilosc;
private List<Obserwator> obserwatorzy = new ArrayList<>();
public int getIlosc() {
return ilosc;
}
public void setIlosc(int x) {
ilosc = x;
powiadomObserwatorow();
}
public void dodajObserwatora(Obserwator obs) {
obserwatorzy.add(obs);
}
public void powiadomObserwatorow() {
for (Obserwator obs : obserwatorzy) {
obs.update();
}
}
public static void main(String args[]) {
Magazyn m = new Magazyn();
ObserwatorKrzysio krzys = new ObserwatorKrzysio();
// bez obserwatorow
m.setIlosc(100);
// z obserwatorem
m.dodajObserwatora(krzys);
m.setIlosc(200);
}
}