2010-08-09 16 views

Odpowiedz

7

To zależy od tego, co robią te zajęcia. Główną ideą MVC jest oddzielenie warstwy prezentacji (V i C) od pozostałej aplikacji (M). Jeśli twoje klasy narzędziowe obsługują rzeczy związane z warstwą prezentacji, umieść je w odpowiednim pakiecie, na przykład ViewHelpers lub InputHandlers. Jeśli funkcje Utility odnoszą się do czegokolwiek innego, sprawdź, do której warstwy w twoim modelu najlepiej pasują, na przykład DataAccess Utilities przechodzą do pakietu DAO, podczas gdy MailHelper może wejść do pakietu Services i tak dalej.

+0

Przeczytałem książkę, w której napisano, że modele są klasami z warstwy biznesowej i/lub programów narzędziowych. Idea posiadania ViewHelpera wydaje się tworzyć hybrydę kontrolerów i widoków. Co myślisz? – rix501

+1

@ rix501 Kontroler obsługuje dane użytkownika z interfejsu użytkownika i przekazuje żądania do modelu. A [ViewHelper] (http://java.sun.com/blueprints/corej2eepatterns/Patterns/ViewHelper.html) nie powinien obsługiwać danych wprowadzanych przez użytkownika. Główną ideą jest oddzielenie dowolnej logiki wymaganej przez widok, aby zakończyć renderowanie z dala od szablonu widoku. Rozróżnienie, które przeczytałeś w książce, jest poprawne. Termin Narzędzia jest po prostu niejasny. – Gordon

0

Jeśli to nie jest reprezentacja przechowywanych danych, to prawdopodobnie nie jest to klasa Model. Nawet wtedy, jeśli nadal reprezentuje pewne przechowywane dane, ale zachowuje się radykalnie inaczej niż pozostałe modele, to i tak może nie należeć do reszty modeli.

Funkcje narzędziowe mogą należeć do dowolnej klasy, do której są narzędziami, Modelu, Widoku lub Kontrolera. Jeśli są nieco bardziej ogólne, to żyją "poza" projektem MVC.

+0

Model to nie tylko baza danych! – Gordon

+2

Wiesz, kiedy po raz pierwszy zacząłem używać SO, natknąłem się na sporo argumentów i pomyłek związanych z tym, co zrobiła warstwa Modelu w MVC. Po pewnym czasie doszedłem do wniosku, że istnieje wiele złych sposobów na wykonanie MVC. To było trochę po tym, jak zacząłem utrzymywać stary kod, który zrobił MVC na co najmniej trzy różne, złe sposoby. Jednak najbardziej spójną rzeczą było to, że Model ** modelował przechowywane obiekty danych **. Nie oznacza to, że była to tylko warstwa ORM, ale powinni wiedzieć, w jaki sposób wchodzą w interakcje z innymi oraz jak przechowywać i pobierać ich dane. – staticsan

0

Klasa modelu może zawierać kod dostępu do danych, logikę aplikacji. więc dobrze jest umieścić w Modelu.

Najlepszym rozwiązaniem jest utworzenie folderu w folderze Model i umieszczenie tam klasy narzędziowej.

Powiązane problemy