Das Prinzip der Einzelverantwortung besagt, dass "eine Klasse einen Grund für die Änderung haben sollte".
Im MVC-Muster besteht die Aufgabe des Controllers darin, zwischen der Ansicht und dem Modell zu vermitteln. Es bietet eine Schnittstelle für die Ansicht, um vom Benutzer auf der GUI ausgeführte Aktionen zu melden (z. B. Aufrufen der Ansicht controller.specificButtonPressed()
), und kann die entsprechenden Methoden für das Modell aufrufen, um seine Daten zu manipulieren oder seine Operationen aufzurufen (z. B. model.doSomething()
). .
Das bedeutet, dass:
- Der Controller muss mit der GUI vertraut sein, um der Ansicht eine geeignete Oberfläche zum Melden von Benutzeraktionen anbieten zu können.
- Es muss auch über die Logik im Modell Bescheid wissen, um die entsprechenden Methoden im Modell aufrufen zu können.
Dies hat zwei Gründe, sich zu ändern : eine Änderung in der Benutzeroberfläche und eine Änderung in der Geschäftslogik.
Wenn sich die Benutzeroberfläche ändert, z. B. eine neue Schaltfläche hinzugefügt wird, muss der Controller möglicherweise eine neue Methode hinzufügen, damit die Ansicht einen Benutzer über das Drücken dieser Schaltfläche informiert.
Und wenn sich die Geschäftslogik im Modell ändert, muss der Controller möglicherweise Änderungen vornehmen, um die richtigen Methoden für das Modell aufzurufen.
Daher hat der Controller zwei mögliche Gründe für eine Änderung . Bricht es SRP?