Im progettazione di un framework MVC ma non so dove dovrei inserire le mie classi di utilità. Ho letto da qualche parte dove diceva che le classi di utilità sono Classi di modelli. Questa linea di pensiero è corretta o sono un tipo separato di classe?Una classe di utilità può essere una classe Model in un framework MVC?
risposta
Dipende da cosa stanno facendo queste classi di utilità. L'idea principale di MVC è di separare il livello di presentazione (V e C) dall'applicazione rimanente (M). Se le tue classi di utilità gestiscono le cose relative al livello di presentazione, inseriscile in un pacchetto appropriato, ad esempio ViewHelpers o InputHandlers. Se le funzioni dell'utilità si riferiscono a qualsiasi altra cosa, vedere a quale livello nel modello si adatta meglio, ad esempio, le utilità DataAccess entrano nel pacchetto DAO mentre un MailHelper potrebbe entrare nel pacchetto Servizi e così via.
Se non è una rappresentazione di dati memorizzati, probabilmente non è una classe del modello. Anche allora, se rappresenta ancora dati memorizzati di qualche tipo, ma si comporta in modo radicalmente diverso dal resto dei tuoi Modelli, potrebbe non appartenere comunque al resto dei Modelli.
Le funzioni di utilità possono far parte della classe di cui sono utilità, Modello, Vista o Controller. Se sono un po 'più generici, allora vivono "fuori" dal design MVC.
Il modello non è solo il database! – Gordon
Sapete, quando ho iniziato su SO, ho incontrato un sacco di argomenti e confusione su ciò che il livello del modello ha fatto in MVC. Dopo un po ', mi sono reso conto che c'erano un sacco di modi sbagliati per fare MVC. Questo è stato un po 'dopo che ho iniziato a mantenere un vecchio codebase che faceva MVC in almeno tre modi diversi e cattivi. Tuttavia, l'unica cosa che è stata la più coerente è che il modello ** ha modellato gli oggetti dati memorizzati **. Questo non significava che fosse solo uno strato ORM, ma dovevano sapere come interagiscono con gli altri e come archiviare e recuperare i loro dati. – staticsan
La classe del modello può contenere il codice di accesso ai dati, la logica dell'applicazione. quindi va bene inserire nel modello.
L'approccio migliore consiste nel creare una cartella Utility nella cartella Model e posizionare la classe di utilità lì.
- 1. Una classe interna di una classe template può essere una classe non template?
- 2. Una classe Model (in MVC) dovrebbe utilizzare un metodo statico o un metodo di istanza?
- 3. Un metodo all'interno di una classe può essere un generatore?
- 4. Ruby Object Model - antenati di una classe
- 5. Classe base vs Classe di utilità
- 6. È un ASPC MVC Visualizza una "classe"?
- 7. Can __setattr __() può essere definito in una classe con __slots__?
- 8. Come creare una classe Framework in XCode?
- 9. Una classe può estendere sia una classe che implementare un'interfaccia
- 10. Una classe può restituire un oggetto stesso
- 11. Symfony 2 - Dove devo inserire una classe di utilità?
- 12. È una classe locale in un metodo di una classe un amico di questa classe?
- 13. Esiste qualcosa come una classe che può essere implementata?
- 14. Perché DialogFragment non può essere una classe interna?
- 15. Il vincolo non può essere una classe speciale 'System.Object'
- 16. Una classe DialogFragment interna può essere statica o no?
- 17. Perché una classe Java non può essere dichiarata come statica?
- 18. Perché una classe super può essere inizializzata come classe figlio in Java?
- 19. Perché una struttura non gestita non può essere un membro di una classe gestita?
- 20. Java: una classe parent può recuperare staticamente il nome classe di una classe figlio?
- 21. Come si può aggiungere una variabile di classe a una classe in Pharo?
- 22. Come può una classe non statica chiamare un altro metodo di una classe non statica?
- 23. C# classe di utilità di serializzazione generica
- 24. Una classe di test può diventare un "oggetto di Dio"?
- 25. Perché una funzione membro PRIVATE non può essere una funzione di amicizia di un'altra classe?
- 26. Eclissi può convertire/rifattorizzare un metodo in una classe?
- 27. Una classe può validarsi o creare un'altra classe per convalidarla?
- 28. Metodi di estensione vs utilità statica Classe
- 29. Collegamento IntelliJ per mostrare un popup di metodi in una classe che può essere ricercata
- 30. La classe del contratto deve essere una classe astratta
Ho letto un libro in cui diceva che i Modelli sono le classi di un livello aziendale e/o di utilità. L'idea di avere un ViewHelper sembra come fare un ibrido di Controllers and Views. Cosa ne pensi? – rix501
@ rix501 Un controller gestisce l'input dell'utente dall'interfaccia utente e delega le richieste al modello. Un [ViewHelper] (http://java.sun.com/blueprints/corej2eepatterns/Patterns/ViewHelper.html) non dovrebbe gestire l'input dell'utente. L'idea principale è quella di separare qualsiasi logica necessaria dalla vista per completare il rendering dal modello di visualizzazione. La distinzione che hai letto nel libro è corretta. Il termine Utilities è comunque vago. – Gordon