Wikipedia opisuje Single Responsibility Principle ten sposób:Czy tradycyjne użycie kontrolera w MVC prowadzi do naruszenia zasady pojedynczej odpowiedzialności?
Jednolity Odpowiedzialność Zasada stanowi, że każdy obiekt powinien mieć jeden odpowiedzialność i że odpowiedzialność powinna być całkowicie zamknięta przez klasę. Wszystkie jego usługi powinny być ściśle powiązane z tą odpowiedzialnością.
Tradycyjne użycie kontrolera w MVC wydaje się prowadzić programistę w kierunku naruszenia tej zasady. Weź prosty kontroler księgi gości i zobacz. Kontroler może mieć dwie metody/akcje: 1) Indeks() i 2) Prześlij(). Indeks() wyświetla formularz. Funkcja Submit() je przetwarza. Czy te dwie metody reprezentują dwie odrębne obowiązki? Jeśli tak, to w jaki sposób wchodzi pojedyncza odpowiedzialność?
Zgadzam się, sam w sobie nie narusza wzoru MVC, ale zachęca do - gdzie zamierzasz wprowadzić nowe działanie związane z użytkownikiem? Dlaczego, w UserController oczywiście. Wkrótce wyrośnie spod kontroli, wypełniona metodami działania, które nie są zależne od siebie nawzajem, ale są zgrupowane tylko dlatego, że są wygodne. Rozpocząłem dyskusję [tutaj] (https://gist.github.com/mindplay-dk/5505023) w celu omówienia idei rezygnacji ze sterowników i grupowania akcji w przestrzenie nazw. –