To pytanie dotyczy MVC (Model-View-Controller). Mój model aktualizuje obecnie moim zdaniem, kiedy to został zmieniony za pomocą obserwatora/obserwowalnych wzór w Javie:Czy to źle, że modele używają Observer i Observable w Javie?
public class Model extends Observable {
}
public class View implements Observer {
@Override
public void update(observable o, Object obj) {
// ... update the view using the model.
}
}
To działa prawidłowo. Jednak mój model jest coraz bardziej skomplikowane - to zaczyna trzymać wykazów innych klas:
public class Model extends Observable {
List<Person> people = new ArrayList<Person>();
}
public class Person {
private String name = "";
// ... getter/setter for name
}
Mój problem jest: kiedy zmienia nazwisko osoby Chcę zaktualizować widok słuchania modelu, który zawiera tę osobę. Jedyny sposób, jaki mogę wymyślić, to sprawić, że Model zaimplementuje klasę Observer, a Person rozszerzy klasę Observable. Następnie, kiedy Osoba się zmienia, powiadamia swoich obserwatorów (które obejmowałyby Model macierzysty).
Jednak wydaje się, że dużo pracy, jeśli moje modele stają się skomplikowane. Czy istnieją lepsze sposoby na "zapylenie" zmian w modelu macierzystym?
Właściwie to zły projekt, aby używać MVC. –
Czy możesz to uzasadnić lub zaproponować alternatywę? – sdasdadas
Zasadniczo MVC nie "pasuje" do standardowych "nowoczesnych" koncepcji interfejsu użytkownika. Musisz stanąć na głowie, aby "oddzielić" projekt na te trzy sztuczne kategorie. Chcesz zachować separację danych/prezentacji w jak największym stopniu, ale kiedy próbujesz oddzielić "widok" i "kontroler", musisz zacząć robić bezsensowne rozróżnienia. –