Witam,
Potrzebuję pomocy z rozwiązaniem pewnego problemu. Planuję wykorzystać wzorzec obserwer dla paska Statusu (projektuję edytor obrazów wektorowych). Trafiłem jednak na pewien problem - potrzebuję mieć możliwość, żeby kilka subjectów (w moim przypadku JPaneli) informowało obserwator (StatusBarPanel) o zmianach na nich wykonywanych.
Mam jeden główny JPanel, który póki co jest Subjectem (Observable) i kilka innych paneli, które trzymają referencję do tego rodzica i mogą dzięki temu imitować bycie Subjectami. Takie rozwiązanie jednak chyba trochę się kłóci z założeniami wzorca, bo zależności subject - observer powinny być jasno zdefiniowane.
Sub sub = new Sub(); //DrawPanel
Obs obs = new Obs(); //StatusBarPanel
sub.addObserver(obs);
A a = new A(sub); //BrushOptionsPanelActionListener
B b = new B(sub); //PaintOptionsPanelActionListener
C c = new C(sub); //...
a.setState("Klasa A v2");
Póki co wygląda to tak, jednak chciałbym to jakoś zmodyfikować tak, żeby każda z tych klas (A, B, C) mogła informować jednego obserwatora (obs). Czy istnieje taka możliwość? Czy nie wychodzi to poza założenia wzorca?
Pozdrawiam,
Marcin