mmofacts.com

MVC und Co. - Was verwendet ihr?

gepostet vor 14 Jahre, 11 Monate von DaBen

Hallo liebe Community,

ich habe eine kleine Frage bezüglich der Architekturmuster die ihr in Euren Projekten verwendet. Bei Internetapplikationen werden einem Patterns wie MVC, MVP usw. beinahe vorgeschrieben wenn man nach einem "Standard" sucht. Sicherlich, die Grundzüge davon finde ich sehr sinnvoll und kann ich auch gut in meinen Projekten umsetzen. Allerdings hapert es bei mir immer wieder an den selben Punkten.

Zum einen finde ich es schwierig sich wiederholende Designelemente in der MVC zu implementieren. Wiederkehrende Elemente in Parent-Klassen der Controller auszulagern ist zwar eine mögliche Lösung, jedoch nicht sehr dynamisch. Außerdem greifen mMn die sog. "Models" bei einem Browserspiel derart ineinander, dass ich sie garnicht recht voneinander trennen kann und bennen kann. Z.B. hat ein Charaktermodel einen bezug zu einem Accountmodel, besitzt Items (noch ein Model), Attribute (und noch eines...) usw. was ich dann bei entsprechenden Abfragen in den Controllern bzw. Views sehr kritisch zu kombinieren finde.

Daher meine Frage: Benutzt ihr Patterns wie MVC oder habt ihr andere - bevorzugterweise objektorientierte Ansätze - die o.g. Probleme umgehen können? Wie sind Eure Projekte in diesem Zusammenhang aufgebaut?

Vielen Dank für Eure Antworten im Voraus ;-)

Lg Ben

gepostet vor 14 Jahre, 11 Monate von Nerosmeel

Moin,

ich nutze in PHP nur Controller und Views, die Models fallen bei mir ganz weg weil ich sie einfach unnötig finde. Die SQL abfragen kann man auch einfach in die Controller Packen. Sieht zwar nicht immer schön aus ist aber schön schnell.

gepostet vor 14 Jahre, 11 Monate von knalli

Eine Art Document-View-Pattern. Der Begriff ist nicht offiziell, aber wird manchmal dafür verwendet.

Das du die Abfragen nur im Controller machst, zeigt auf jeden Fall, dass du scheinbar noch keine redundanten Funktionen hast (etwa Benutzer registrieren und Benutzer erstellen, beides ist ja einen neuen Hinzufügen). Falls doch, wäre der Gedanke einer weiteren, zu delegierenden, externen Klasse nicht verkehrt.

gepostet vor 14 Jahre, 11 Monate von Nerosmeel

Für so was nutzt ich die MySQL Queryfunktion und für regelmässige Berechnungen die Eventfunktion.

gepostet vor 14 Jahre, 11 Monate von Phoscur

Das ist eine Frage des Grundentwurfs, je nachdem wie Erweiterbar dein Spiel werden soll und wieviel du darein investieren willst, ist wohl der wichtigste Aspekt, danach kannst du entscheiden, wie stark dein Entwurf sich auf OOP stützen sollte.

Objektorientierung lernt sich auch nicht so schnell, bis du mal die fortgeschritteneren Themen wie Design Patterns durchgeackert und drauf hast vergeht Zeit.

Ich würde mich stark auf OOP verlegen und während des Schreibens des Spiels so viel wie möglich lernen. OOP bietet sich in diesem Fall an, ist aber natürlich nicht die einzige Möglichkeit gerade mit funktionaleren Ansätzen kannst du mehr Performance erhalten, dann solltest du dir allerdings eine andere Sprache als PHP aussuchen. Hm, ich geh jetzt einfach mal davon aus, dass du es mit Standardmitteln machen willst, du kannst gerne mal sagen mit welchen Sprachen/Tools du dein Projekt umsetzt, das hilft uns dir zu helfen.

Bei einem OpenSource-Spiel, wie ich eines schreibe, finde ich OOP unabdingbar um maximale Flexibilität und Erweiterbarkeit zu erreichen. Ich beschäftige mich sogar gerade mit DomainModeling und werde meine Erfahrungen miteinfließen lassen.

Patterns: GoF, pseudo MVC (leicht kaputt weil die View bei mir in JavaScript geschrieben wird), PoEAA

gepostet vor 14 Jahre, 11 Monate von Klaus

@OP

Das ist doch normal, dass Models ineinander greifen. Dafür bieten gängige Frameworks Schnittstellen, um die Beziehungen zu formalisieren. Stichworte sind da Has One, Has Many, Belongs To und das allseits geliebte HABTM. Somit kannst du dann bei einfachen Abfragen mit einem Befehl dein Objekt inkl. relevanter Beziehungen laden.

Auf diese Diskussion antworten