Ich kann keine bessere Lösung für mein Problem finden. Ich habe einen Ansichtscontroller, der eine Liste von Elementen darstellt. Diese Elemente sind Modelle, die eine Instanz von B, C, D usw. sein können und von A erben. In diesem Ansichtscontroller sollte also jedes Element zu einem anderen Bildschirm der Anwendung wechseln und einige Daten übergeben, wenn der Benutzer einen von ihnen auswählt . Die zwei Alternativen, die mir in den Sinn kommen, sind (bitte ignorieren Sie die Syntax, es ist keine bestimmte Sprache)
1) Schalter (ich weiß, dass saugt)
//inside the view controller
void onClickItem(int index) {
A a = items.get(index);
switch(a.type) {
case b:
B b = (B)a;
go to screen X;
x.v1 = b.v1; // fill X with b data
x.v2 = b.v2;
case c:
go to screen Y;
etc...
}
}
2) Polymorphismus
//inside the view controller
void onClickItem(int index) {
A a = items.get(index);
Screen s = new (a.getDestinationScreen()); //ignore the syntax
s.v1 = a.v1; // fill s with information about A
s.v2 = a.v2;
show(s);
}
//inside B
Class getDestinationScreen(void) {
return Class(X);
}
//inside C
Class getDestinationScreen(void) {
return Class(Y);
}
Mein Problem mit Lösung 2 besteht darin, dass B, C, D usw. Modelle sind und sie keine Informationen über die Anzeige von Inhalten haben sollten. Oder sollten sie in diesem Fall?