Ich lese gerade eine blog post, die MVC mit einer Bankanalogie erklärt. Ich habe einige Monate Erfahrung mit der Entwicklung von Webanwendungen mit einem MVC-Framework (CakePHP), also bekomme ich die Grundlagen, aber ich begann ein Thema zu sehen, das mich denken ließ, dass ich einen fehlerhaften Ansatz für meine Logik verwende:Fette Modelle, dünne Controller und das MVC-Entwurfsmuster
- Fat Modelle, Skinny Controller
- Halten Sie so viel Geschäftslogik in den Modellen wie möglich
in meiner App-Modelle sind mit Anorexie und Controller sind fettleibig. Ich habe alle Geschäftslogik in den Controllern und nichts außer Assoziationen und Validierungsregeln in den Modellen.
Scanning durch meinen Controller, kann ich jetzt viel Logik identifizieren, die wahrscheinlich in einem Modell gehen sollte:
- Die App haben Listen, die Elemente enthalten, und die Elemente sortiert werden können. Die Sortierlogik, die die Liste in Rangfolge bringt, befindet sich in einer Steuerung.
- Ähnlich haben Artikel (Artikelmodell) auch Bilder (Image-Modell). Jedes Objekt kann ein Standardbild haben (in der Artikeltabelle mit image_id bezeichnet). Wenn ein Objekt mit seinen Bildern angezeigt wird, sollte das Standardbild zuerst angezeigt werden. Ich habe die Logik, die das in einem Controller macht.
- Wenn eine Liste angezeigt wird, werden verwandte Listen in der Seitenleiste angezeigt. Die Logik zum Bestimmen, welche Listen in Beziehung stehen, befindet sich in einer Steuerung.
Nun zu meinen Fragen:
- Mit den Beispielen, die ich oben gab, bin ich auf dem richtigen Weg in der Annahme, dass diejenigen Instanzen der Logik sind gegenwärtig in einem Controller, der in einem Modell gehört?
- Welche anderen Bereiche der Logik, wie sie bei Web-Apps üblich sind, sollten in Modelle integriert werden?
- Ich bin sicher, dass die Identifizierung dieses Problems und die Änderung meines Entwurfsmusters die halbe Miete ist, aber selbst wenn ich mich entscheide, die oben genannten Beispiele zu nehmen und zu versuchen, diese Logik auf ein Modell zu übertragen, würde ich nicht wissen, wo ich anfangen soll . Kann mir jemand in die richtige Richtung zeigen, indem ich hier etwas Code posten oder auf gute Lernressourcen verlinken kann? CakePHP spezifische Hilfe wäre großartig, aber ich bin sicher, dass alles MVC ausreichen wird.
Hab schon mal davon gehört :) – Marco