Mein Problem ist, dass wir versuchen, ein MVC (PHP) Framework zu verwenden. Nach vielen Diskussionen denke ich, dass MVC sehr gut ist, aber mir fehlt die Möglichkeit, wiederverwendbare Modell- (Anwendungs-) Logik zu schreiben. Ich bin also nicht sicher, ob wir den richtigen Ansatz zur Implementierung unserer Software in einem MVC-Framework haben.Wie schreibt man wiederverwendbare Geschäftslogik in MVC-Modellen?
Zuerst beschreibe ich den nicht-MVC, oo-Ansatz, den wir im Moment verwenden.
Zum Beispiel - wir arbeiten an einigen Browsergames (ja, das ist unser Beruf). Stellen Sie sich vor, wir haben ein Spielerobjekt. Wir benutzen dieses Spielerobjekt sehr oft. Wir haben verschiedene Seiten, auf denen Sie nachdenken können, also müssen Sie "Geld" -Transaktionen auf dem Bankkonto des Spielers machen oder sich vorstellen, dass Sie gegen andere Spieler kämpfen können. Wir haben mehrere Kampf-Skripte, und diese Skripte nehmen 2 oder mehr Spieler-Objekte auf (es hängt von der Art des Kampfes ab, dh Clan-Kampf, Spieler-gegen-Spieler-Kampf ...).
Also, wir haben mehrere Seiten (und Controller) mit unterschiedlicher Kampflogik. Aber jeder dieser Controller verwendet das Spieler-Objekt, um alle Attribute und Gegenstände eines Spielers zu berechnen und welche Schaden und Verteidigung ein Spieler macht.
Also, wie können wir die Logik im Player-Objekt im Falle eines MVC-Modells wiederverwenden? es wäre schlecht, die ganze notwendige Logik in den verschiedenen Kampfkontrollern und -modellen zu kopieren.
Ich denke, die "gold-transaction" -Logik wäre ein gutes Beispiel, um Ihnen weitere Detailinformationen zu geben. du brauchst die transact-funktion im falle eines kampfes, wenn du gegen einen anderen spieler gewinnst und etwas von seinem gold erbeutest, brauchst du die transaktionsfunktion, wenn du etwas kaufst und du benötigst die transact-funktion, wenn du etwas gold ausgibst an die Spielergilde ...
Also würde ich sagen, es wäre ein schlechter Ansatz, all diese Funktionen in einem Spielermodell zu definieren! Ich kann dir sagen, dass dieses Player-Modell sehr groß sein würde (eigentlich haben wir das Problem, dass unsere Player-Klasse wirklich riesig ist - es ist eine Gott-Klasse)
Denkst du, es gibt eine MVC-ähnliche Lösung für dieses Problem?