Trennung Model -> Userinterface: Callbacks oder wie?

04/12/2010 - 14:44 von Andreas Bruhn | Report spam
Moin moin allerseits,

bei meinem aktuellsten Programm habe ich neben den Kern-Modulen die
die eigentliche Arbeit machen sollen auch zwei Module "gui.py" und
cli.py" vorgesehen. In dem einen Modul soll die zentrale Klasse für
eine grafische Benutzeroberflàche entstehen, in dem anderen für's
Kommandozeilen-Interface.

Zwecks Kommunikation von dem Kern zu den verschiedenen Arten von
Userinterface bin ich gedanklich derzeit bei Callback-Routinen die
dann bei Bedarf vom Kernsystem aufgerufen werden.

Nun gibt es ja verschiedene Arten von Meldungen/Fragen die an den
Anwender gemeldet werden müssen. Zum Beispiel:

a.) "mir fehlt hier der Pfad zur Datei xyz?"

b.) "mir fehlt der Wert von Parameter 4711?"

Bei der Kommandozeilenversion dürfte die Reaktion beide Male relativ
àhnlich bis gleich ausfallen, aber bei der grafischen Oberflàche
sollte im Fall a.) dem Anwender ein Dateiauswahl-Dialog und im Fall
b.) ein kleines Fenster mit Eingabefeld, etwas Text und einem
OK-Button angezeigt werden.

Wie mache ich das jetzt am besten?

Entweder nur eine zentrale Callback-Routine, die dann, je nach dem was
in den Übergabeparametern steht, dafür sorgt dass mal ein
Dateiauswahl-Dialog und mal ein Dateneingabe-Dialog angezeigt wird?

Oder mehrere Callbacks und der Kern benutzt dann je nach Bedarf die
"Dateiauswahl"-Callbackroutine oder die
"Eingabedialog"-Callbackroutine?

Ich kann mich nicht so richtig für die eine oder andere Variante
entscheiden, mir scheinen beide Varianten eher eine Geschmacksfrage zu
sein.

Wie seht ihr das? Gibt es etwas was ausdrücklich für die eine oder
andere Art spricht? Oder wàre ein ganz anderes Vorgehen, ohne
Callbacks, besser?

Unentschlossene Grüße,

Andreas
 

Lesen sie die antworten

#1 Stefan Schwarzer
08/12/2010 - 22:49 | Warnen spam
Hallo Andreas,

hier noch ein paar Ideen.

On 2010-12-04 14:44, Andreas Bruhn wrote:
Wie mache ich das jetzt am besten?

Entweder nur eine zentrale Callback-Routine, die dann, je nach dem was
in den Übergabeparametern steht, dafür sorgt dass mal ein
Dateiauswahl-Dialog und mal ein Dateneingabe-Dialog angezeigt wird?

Oder mehrere Callbacks und der Kern benutzt dann je nach Bedarf die
"Dateiauswahl"-Callbackroutine oder die
"Eingabedialog"-Callbackroutine?



Ich würde eher zwei getrennte Callbacks verwenden. Oder eine
Callback-Routine, die in einem Objekt alle Informationen zur
Verfügung stellt, die die Nutzerschnittstelle braucht.

Als Alternativen könnte ich mir einerseits vorstellen, dass
das Kernsystem eine Exception auslöst oder andererseits,
dass die die Angaben zur Fehlersituation in eine Queue
gestellt werden, die dann von der Nutzerschnittstelle zu
einem "beliebigen" Zeitpunkt bearbeitet werden können.
Exceptions sind einfacher, aber Callback oder Queues
funktionieren auch dann, wenn die Operation potenziell
lànger dauert und daher asynchron laufen soll.

Viele Grüße
Stefan

Ähnliche fragen