Dies ist ziemlich seltsam, obwohl die Antwort von der verwendeten Sprache / dem verwendeten Framework abhängt, da verschiedene Sprachen / Frameworks unterschiedliche MVC-Ansätze haben.
Im Allgemeinen werden Sie keinen Controller eines anderen verwenden, da:
Controller geben normalerweise ein Ergebnis eines Typs zurück, der vom MVC-Framework verwendet werden soll. Dieses Ergebnis enthält viele Informationen, die Sie als Anrufer nicht benötigen (z. B. den Namen der Ansicht), und macht es nicht immer einfach, zu den Informationen zu gelangen, die Sie interessieren könnten (in Ihrem Fall die Modell, wenn ich richtig denke).
Controller lassen sich nicht einfach aus dem Geschäftscode heraus initialisieren, da sie häufig einige Informationen über die HTTP-Anforderung und den Kontext benötigen. Alle diese Informationen werden voraussichtlich vom MVC-Framework übergeben.
Noch wichtiger ist, wenn Sie eine Reihe von Suchergebnissen in zwei Controllern benötigen - einer, der die Ergebnisse für den Endbenutzer anzeigt, und einer, der Statistiken generiert -, platzieren Sie die Suchlogik einfach in Ihrer Business-Schicht (wo sie überhaupt hingehört). übrigens), und halten Sie Ihre Controller so klein wie möglich.
In MVC besteht die Rolle eines Controllers darin, den Prozess zu orchestrieren:
- Holen Sie sich die relevanten Eingaben aus der Anfrage,
- Validatoren die Aufgabe übertragen, die Eingabe zu validieren / zu bereinigen,
- Rufen Sie die relevanten Methoden der Business-Schicht auf,
- Geben Sie dem MVC-Framework das resultierende Modell und die Ansicht.
Die Rolle eines Controllers besteht nicht darin, sich mit Geschäftslogik zu befassen.
Sobald der Code in die Business-Schicht verschoben wurde, können Sie eine Suchschnittstelle bereitstellen, die im Gegensatz zu einem Controller, der von einem anderen verwendet wird, auf klare und unkomplizierte Weise wiederverwendet werden kann.