Hi,
ich komme ja eigentlich von Objective-C und OSX. Dort ist Delegation ein sehr häufig benutzes Pattern und irgendwie würde ich das gerne in Java auch so umsetzen aber durch das strikte Typecast von Java bekomme ich das nicht hin. Aber irgendwie muss es ja gehen.
Folgende Situation.
Ich abe zwei ViewController A und B. Beide Klassen müssen nun etwas berechnen und machen darum einen Langzeit-Requester auf. Da ich diesen ja öfter benutze packe ich den in eine eigene Klasse. Dieser öffnet sich nun und besitzt einen Abbruch-Button. Wird dieser Button gedürckt, so muss der aufrufende Controler darüber benachrichtigt werden, damit er das Berechnen abbrechen und den Langzeit-Requester schließen kann.
In Objective-C bekommt dazu der Langzeit-Requester ein Delegate Protokoll wo definiert ist, welche Methode eine Klasse implementieren muss um sein delegate zu werden. In dem Fall z.B.
void requesterDidCancel();
und der Requeter erhält eine property delegate vom typ id (undefinierter pointer auf irgendein object).
Wird nun der Abbruch-Button geklcikt, dann ruft der Langzeitrequester einfach
this.delegate.requesterDidCancel();
auf und fertig.
Damit ist dem Langzeit-Requester egal von was für einem Object er aufgerufen wird, wichtig ist nur, dass dieses die Methode requesterDidCancel() implementiert hat.
Wie löst man so etwas in Java?
Gruß
Claus
ich komme ja eigentlich von Objective-C und OSX. Dort ist Delegation ein sehr häufig benutzes Pattern und irgendwie würde ich das gerne in Java auch so umsetzen aber durch das strikte Typecast von Java bekomme ich das nicht hin. Aber irgendwie muss es ja gehen.
Folgende Situation.
Ich abe zwei ViewController A und B. Beide Klassen müssen nun etwas berechnen und machen darum einen Langzeit-Requester auf. Da ich diesen ja öfter benutze packe ich den in eine eigene Klasse. Dieser öffnet sich nun und besitzt einen Abbruch-Button. Wird dieser Button gedürckt, so muss der aufrufende Controler darüber benachrichtigt werden, damit er das Berechnen abbrechen und den Langzeit-Requester schließen kann.
In Objective-C bekommt dazu der Langzeit-Requester ein Delegate Protokoll wo definiert ist, welche Methode eine Klasse implementieren muss um sein delegate zu werden. In dem Fall z.B.
void requesterDidCancel();
und der Requeter erhält eine property delegate vom typ id (undefinierter pointer auf irgendein object).
Wird nun der Abbruch-Button geklcikt, dann ruft der Langzeitrequester einfach
this.delegate.requesterDidCancel();
auf und fertig.
Damit ist dem Langzeit-Requester egal von was für einem Object er aufgerufen wird, wichtig ist nur, dass dieses die Methode requesterDidCancel() implementiert hat.
Wie löst man so etwas in Java?
Gruß
Claus