Im projektowania ram MVC, ale nie wiem, gdzie powinienem umieścić moje klasy narzędzia. Czytałem gdzieś, gdzie powiedziano, że klasy narzędziowe to klasy modelowe. Czy ta linia myślenia jest poprawna, czy też są to oddzielne typy klas?Czy klasa narzędziowa może być klasą modelu w strukturze MVC?
Odpowiedz
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.
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.
Model to nie tylko baza danych! – Gordon
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
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.
- 1. Klasa zamówienia powinna być klasą abstrakcyjną
- 2. Ograniczenie nie może być specjalną klasą "System.Object"
- 3. Jak gruboziarnisty powinien być model w strukturze MVC?
- 4. Czy RecyclerView.ViewHolder zawsze musi być wewnętrzną klasą?
- 5. Opcja/być może klasa dla C++
- 6. Czy klasa z usuniętym konstruktorem kopiowania może być trywialnie kopiowana?
- 7. Czy klasa Singleton wewnątrz DLL może być współdzielona pomiędzy procesami?
- 8. Czy klasa abstrakcyjna może być używana jako typ odniesienia?
- 9. Czy SwingWorker musi być klasą zagnieżdżoną?
- 10. Podstawowa klasa modelu MVVM klasy
- 11. Spring MVC Request mapowanie, czy może to być dynamiczne/konfigurowalne?
- 12. Dlaczego klasa jednostek w WZP nie może być ostateczna?
- 13. Etykietka narzędziowa w .Net
- 14. Co powinno być własnością modelu we wzorcu MVC?
- 15. Czy domyślna wartość pola modelu Django może być zdefiniowana przez funkcję zależną od zagranicznego modelu macierzystego?
- 16. Czy null jest klasą w języku Java?
- 17. Czy REST w praktyce może być bezpaństwowcem?
- 18. Jak stworzyć abstrakcyjną klasą bazową w JavaScript, który nie może być instancja
- 19. Czy Spring Spring MVC może być użyty do implementacji wzoru MVC w aplikacjach Swing?
- 20. Czy JavaScript może być bootowany?
- 21. Czy moja klasa sesji powinna być statyczna?
- 22. Ustal, czy klasa Java jest przenośną klasą SE
- 23. Czy python @ classmethod może być dziedziczony?
- 24. PHP - klasa, która może być instancja tylko przez inną klasę
- 25. Czy javascript może być wbudowany w WebPacka?
- 26. Czy EntryElement może być wieloliniowy w MonoTouch.Dialog?
- 27. Czy metoda w klasie może być generatorem?
- 28. Czy to może być rekurencyjne w Prologu?
- 29. Czy zakres może być dopasowany w Scali?
- 30. niewłaściwa klasa wartości: klasa org.apache.hadoop.io.Text nie jest klasą org.apache.hadoop.io.IntWritable
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
@ 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