Ich habe gerade einen Blog-Beitrag gelesen , in dem MVC anhand einer Bankanalogie erklärt wird. Ich habe einige Monate Erfahrung mit der Entwicklung von Webanwendungen mit einem MVC-Framework (CakePHP), damit ich die Grundlagen verstehe, aber ich sah ein Thema, das mich glauben ließ, dass ich einen fehlerhaften Ansatz für meine Logik gewählt habe:
- Fette Modelle, dünne Controller
- Behalten Sie so viel Geschäftslogik wie möglich in den Modellen
In meiner App sind Modelle magersüchtig und Controller sind fettleibig. Ich habe die gesamte Geschäftslogik in den Controllern und nichts außer Assoziationen und Validierungsregeln in den Modellen.
Beim Durchsuchen meiner Controller kann ich jetzt eine Menge Logik identifizieren, die wahrscheinlich in ein Modell passen sollte:
- Die App verfügt über Listen, die Elemente enthalten, und die Elemente können eingestuft werden. Die Sortierlogik, die die Liste in eine Rangfolge bringt, befindet sich in einer Steuerung.
- In ähnlicher Weise haben Elemente (Elementmodell) auch Bilder (Bildmodell). Jedes Element kann ein Standardbild haben (in der Elementtabelle mit image_id gekennzeichnet). Wenn ein Element mit seinen Bildern angezeigt wird, sollte zuerst das Standardbild angezeigt werden. Ich habe die Logik, die dies in einem Controller tut.
- Wenn eine Liste angezeigt wird, werden Themenlisten in der Seitenleiste angezeigt. Die Logik zum Bestimmen, welche Listen zusammenhängen, befindet sich in einer Steuerung.
Nun zu meinen Fragen:
- Bin ich mit den Beispielen, die ich oben gegeben habe, auf dem richtigen Weg zu denken, dass dies derzeit Instanzen von Logik in einem Controller sind, der zu einem Modell gehört?
- Welche anderen Bereiche der Logik, die Web-Apps gemeinsam haben, sollten in Modelle einfließen?
- Ich bin mir sicher, dass es die halbe Miete ist, dieses Problem zu identifizieren und mein Entwurfsmuster zu ändern, aber selbst wenn ich mich entscheide, die oben genannten Beispiele zu verwenden und zu versuchen, diese Logik auf ein Modell zu übertragen, würde ich nicht wissen, wo ich anfangen soll. Kann mich jemand in die richtige Richtung weisen, indem er hier Code veröffentlicht oder auf einige gute Lernressourcen verweist? CakePHP-spezifische Hilfe wäre großartig, aber ich bin sicher, dass alles, was MVC ist, ausreichen wird.