2011-02-06 15 views

risposta

31

Un modello di dominio (il termine non è affatto specifico di Java) è una classe che modella qualcosa nel dominio del problema, al contrario di una classe che esiste per motivi di implementazione tecnica.

Spesso le istanze del modello di dominio devono essere mantenute in un database e, in Java, sono in genere conformi alla specifica Java Beans, ovvero hanno ottenuto e impostato metodi per rappresentare singole proprietà e un costruttore senza parametri. Spring e altri framework ti consentono di accedere a queste proprietà direttamente nei tuoi JSP.

Ad esempio, in un'applicazione di negozio, alcune delle classi di modelli di dominio potrebbero essere Prodotto, Ordine, Carrello e Cliente.

+1

cosa significa "persistere nel database" significa in linguaggio laico –

+2

@Name, significa che sopravvivono all'istanza dell'applicazione che li contiene. Per esempio. dopo che l'app del negozio è stata chiusa e riavviata, continuerà a riconoscerti come cliente registrato e ricorderà il contenuto del tuo carrello degli acquisti e i tuoi ordini precedenti. –

+6

@Name: "persist" significa in sostanza "salva". –

8

A Domain model è un modello concettuale del dominio del problema. Per "modello di dominio java" intendono solo le classi java che rappresentano quel modello. Non c'è nulla di specifico per Java nel concetto.

Vedere anche Domain Driven Design per un approccio per concentrare lo sviluppo sulle esigenze del dominio aziendale.

4

Iniziamo con un esempio. Stai creando un'applicazione con verrà utilizzata da alcune persone nella tua località. Quando progetti il ​​sistema, chiami queste persone utenti del tuo sistema. È inoltre necessario gestire un elenco di ruoli per queste persone nel sistema e le informazioni di autenticazione. Quindi, decidi di creare un'entità concettuale nel sistema. Questa entità concettuale viene ulteriormente mappata a un oggetto User nella soluzione software dell'utente (la propria applicazione). Ora quando rappresenti la tua applicazione, descrivi quell'oggetto Utente come un modello di dominio. L'idea alla base di questo termine è solo quella. Puoi leggere ulteriori informazioni al riguardo nel seguente numero Wikipedia link.

5

La risposta di Michael Borgwardt "Un modello di dominio (il termine non è affatto specifico di Java) è una classe" è errata. Sono molto sorpreso che molti siano d'accordo con quella risposta.

Un modello di dominio è tutte le classi che modellano il comportamento della soluzione. È il minimo necessario per realizzare il comportamento richiesto. Il modello di dominio è privo di funzionalità di interfaccia utente e persistenza (a meno che il problema non riguardi l'interfaccia utente o la persistenza).

Ho visto il modello di dominio implementato in una classe ma non è la progettazione di una soluzione orientata agli oggetti. In un modello di dominio orientato agli oggetti, ogni concetto ha una sua classe che implementa il comportamento richiesto da quel concetto e contiene i campi necessari per mantenere lo stato della classe.

+3

Il termine "modello di dominio" ha più una definizione di Han. Può significare l'intero modello di app o un singolo modello di entità. Dipende dal contesto. –

3

So che è passato molto tempo dall'ultimo post qui. Ma è importante che le informazioni su questo concetto siano chiare. Un modello di dominio è spesso un insieme di classi che rappresentano un particolare dominio problematico. Il concetto non è legato a nessun tipo di implementazione tecnologica. Penso che sia un po 'fuorviante dire:

"Le istanze del modello di dominio devono spesso essere mantenute in un database e in Java, in genere, sono conformi alla specifica Java Beans, ovvero hanno ottenuto e impostato metodi per rappresentare proprietà individuali e un costruttore senza parametri La primavera e altri framework consentono di accedere a queste proprietà direttamente nei JSP "

I modelli di dominio sono spesso il risultato di una progettazione basata su domini. La progettazione basata sul dominio è la chiave per un modello di dominio valido e solido.Suggerisco di leggere il libro di Dominic Driven Design di Eric Evans, per darti una migliore comprensione.

Le classi di modelli di dominio dispongono di informazioni ad esse associate, ma il comportamento, a mio parere, è più importante dei dati in questo contesto. Un grosso errore nella progettazione orientata al dominio consiste nel creare classi di dati che rappresentano i dati di un'entità di dominio, ad esempio il cliente, e fornire solo getter e setter pubblici per gli attributi del cliente. Questi oggetti tendono solo a imitare la struttura del database e, di conseguenza, è probabile che la logica aziendale effettiva risieda nei servizi di dominio, risultando in uno anemic domain model. Questo modello è più vicino a un Transaction Script di un modello di dominio.

+0

Qualcuno può spiegare il voto negativo? –

Problemi correlati