|
|
|
|
|
|
|||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
|
|
LinkBack (1) | Themen-Optionen |
Bewertung:
|
|
|
#1 (permalink)
|
|
Erfahrener Benutzer
Registriert seit: 25.04.2005
Beiträge: 1.356
![]() |
Servus,
ich hab hier ne kleine Denkblockade, ich muss in PHP eine Implementation eines Netzwerkprotolls schreiben. Dazu benötige ich eine Klasse mit die die Connection zum Server handelt und viele kleine Klassen die einen Befehl an den Server senden und dessen Antwort verarbeiten. Soweit lässt sich das alles wunderbar über das Verhaltensmuster "Command" lösen. Jetzt stellt sich mir allerdings die Frage wie ich von außen an die Antworten komme. Wäre es sinnvoll die Befehle per Factory zu instanzieren wobei die Factory gleichzeitig die Befehle speichert als History oder soll das ganze so bleiben und die Befehle einfach nur um eine weitere Methode erweitert werden welche die Antwort des Servers zurückgibt? Für ein paar Anregungen das vernünftig umzusetzen wäre ich dankbar.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält. |
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#2 (permalink) |
|
Moderator und Wett-König
|
Hallo HStev,
ich würde in dieser Angelegenheit nicht krampfhaft nach einem Pattern suchen, sondern etwas mehr Pragmatismus walten lassen. Was du brauchst ist: * Eine Basis-Implementierung, die dir den Rahmen deiner API bereitstellt * Verschiedene Commands, die über deren API konfigurierbar sind * Standardisierte Basis-API, mit der man zu jedem Command jeweils ein Answer ziehen kann um die Antwort auf die jeweilige Anfrage abfangen kann Aussen drum noch ein bischen Exception- und Error-Handling und fertig. Beispiel: PHP-Code:
__________________
Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
|
|
|
#3 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 25.04.2005
Beiträge: 1.356
![]() |
Ja so in der Art hab ich das ja auch nur ich hab das Problem das meine Connection Klasse gleichzeitig die Command History verwaltet ... und da jedes Command die Connection im Construktor mitbekommt hab ich praktisch ein Array was immer auf sich selber zeigt ... beim Debuggen mit print_r oder var_export bekomme ich immer die Meldung das die Verschaltelung zu tief wäre.
Dazu kommt noch das die Connection Class gleichzeitig Connection Handler, Command History Container und Command Factory ist und ich denke mir das in kein gutes Entwicklungskonzept.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält. |
|
|
|
|
|
#4 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 03.09.2004
Beiträge: 11.592
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Wenn du auf ner Testumgebungs arbeitest, kannst du ja mal deinem php ein xdebug gönnen, var_dump sollte dann imstande sein solche Verschachtelungen zu erkennen und nicht in die Unendlichkeit abzudrifften.
__________________
robo47.net - Blog, Codeschnipsel und mehr | |
|
|
|
|
|
#8 (permalink) | |
|
Moderator und Wett-König
|
Zitat:
Anders gesprochen: um wirklich absolut sicher zu gehen, sollte der Command nicht direkt von der Connection abhängen. So ein Design wäre im HTTP-Protokoll z.B. fatal.
__________________
Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
|
|
|
|
#9 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 25.04.2005
Beiträge: 1.356
![]() |
Ja ich hab das so gemacht da die Connection Klasse die grundsätzliche Kommunikation mit den Server verwaltet. Also die Klasse stellt Methoden bereit die das Command senden und die Raw Daten empfängt die wieder an das Command zurückgegeben werden wo dann die eigentliche Verarbeitung der Antwort stattfindet.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält. |
|
|
|
|
|
#10 (permalink) | |
|
Erfahrener Benutzer
Registriert seit: 25.04.2005
Beiträge: 1.356
![]() |
Zitat:
Das einzigste wo ich sage das es ein Fehler war ist die Command History direkt in der Connection feszuhalten.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält. |
|
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
LinkBacks (?)
LinkBack to this Thread: http://www.php.de/software-design/47682-welches-entwurfsmuster-fuer-netzwerkprotokollklasse.html
|
||||
| Erstellt von | For | Type | Datum | |
| Adventure PHP Framework - Literatur | This thread | Refback | 02.12.2008 15:17 | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Suche nach Entwurfsmuster, ~singleton + x | Zergling-new | PHP-Fortgeschrittene | 22 | 17.08.2007 18:05 |
| php Entwurfsmuster (DAO) | madhatter | PHP-Fortgeschrittene | 1 | 17.07.2006 23:25 |
| Entwurfsmuster: Wrapper Klasse | Zergling-new | PHP-Fortgeschrittene | 24 | 11.03.2006 03:14 |