Interpretieren eines commandos mit Parametern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

Donnerstag 27. November 2008, 16:54

Hi,

ich bin dabei folgendes zu programmieren:


Es gibt einen Sender und einen Empfaenger. Der Sender sendet einen string der art command/parameter1/parameter2

es gibt ne ueberschaubare menge and commands und maximal 4 parameter.

Der Empfaenger bekommt den strink und dann kann man natuerlich schoen tokens machen, hat das command und baut sich dann eine if/else Konstruktion.

Geht das aber nicht eleganter, irgendwie objektorientierter?

Ich kenne das Interpreter Pattern, aber das passt hier nicht so wirklich, da nicht ein Ausdruck interpretiert werden soll, sondern es geht hier mehr um delegation. Problem ist, dass ja die methode, die die tokens macht, ja auch die ganze logik enthaelt um die entsprechenden aktionen zu machen, also z.B. eine datei offnen, was schreiben, oder schliessen.

Hat jmd. eine idee, obs dafuer nicht ein pattern oder sowas gibt?

thx
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Donnerstag 27. November 2008, 17:17

nutzt doch einfach ein dictionary für dein dispatching

Code: Alles auswählen

def say_hello(name):
  print "hello %s" % name

def say_goodbye(name):
  print "goodbye"

commands = {
  'hello' : sayhello
  'goodbye' : say_goodbye
}

command, params = parse(input)
try:
  commands[command](*params(
except Exception, e:
  print "something went wrong: %s" % e
DasIch
User
Beiträge: 2465
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Donnerstag 27. November 2008, 17:32

Die einzelnen commands würde ich eine Funktion oder eine Methode bearbeiten lassen. Diese würde ich anhand eines dicts auswählen welches du entweder von Hand erstellst oder zur Laufzeit z.B. über einen Dekorator.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Donnerstag 27. November 2008, 17:32

Zeile 14 soll die Klammer wohl geschlossen werden :wink:
Antworten