Modelli di layer di accesso ai dati di Fowlers

4

Fowler parla di un numero di modelli di progettazione disponibili per il livello di accesso ai dati, ad es. Table Data Gateway, Row Data Gateway, Active Record e Data Mapper.

Nel libro suggerisce di usare Data Mapper con Transaction Script e Active Record con Domain Model. Ciò non mi sembra logico in quanto le classi Transaction Script contengono logica aziendale e logica dei dati e il modello di dominio separa la logica aziendale e la logica dei dati. Active Record combina logica aziendale e logica dei dati (come Transaction Script piuttosto che modello di dominio) e Data Mapper separa logica aziendale e logica dei dati (come il modello di dominio piuttosto che Transaction Script). Cosa non sto capendo qui?

    
posta w0051977 19.07.2013 - 22:15
fonte

1 risposta

8
I modelli

Punto 1 sono un mezzo per semplificare la comunicazione su vari concetti. I pattern sono non pensati per essere usati come LEGO in cui si incastrano e risolvono i problemi. Combinazioni di concetti possono aiutare a risolvere un problema, ma non dovresti aspettarti di essere in grado di scegliere e scegliere modelli per le tue esigenze. Innanzi tutto, sono un aiuto alla comunicazione.

Punto 2 Domain logic ! = Business logic , e penso che questo sia il punto cruciale del tuo fraintendimento.

Per Fowler :
Active Record e Data Mapper sono Data Source Architectural Patterns .
Script di transazione e Modello di dominio sono Domain Logic Patterns .

E li definisce come:

Record attivo

An object that wraps a row in a database table or view, encapsulates the database access, and adds domain logic on that data.

Mapper dei dati

A layer of Mappers (473) that moves data between objects and a database while keeping them independent of each other and the mapper itself.

Script di transazione

Organizes business logic by procedures where each procedure handles a single request from the presentation.

Modello di dominio

An object model of the domain that incorporates both behavior and data.

Hai menzionato che Fowler suggerisce di usare

  • Data Mapper with Transaction Script
  • Active Record with Domain Model

e che non hai compreso i seguenti aspetti.

Transaction Script classes contain business logic and data logic

Che non è corretto. Lo script di transazione raggruppa logiche di business simili e non dice nulla sulla logica dei dati.

Domain Model separates business logic and data logic

Il modello di dominio non affronta la logica dei dati o della logica aziendale. Mette insieme regole che sono specifiche del dominio . Quelli potrebbero essere considerati regole aziendali, ma non lo sono. I domini hanno regole intrinseche a cui tutte le aziende devono conformarsi. La regolazione esterna è un buon esempio di logica di dominio che non è necessariamente logica aziendale, ma è comunque una regola a cui è necessario conformarsi.

Active Record combines business logic and data logic

No, Active Record si occupa semplicemente della logica dei dati e fornisce un involucro attorno a quello che potrebbe essere un meccanismo di memorizzazione molto complicato per i dati. Nessuna logica aziendale qui.

Data Mapper separates business logic and data logic

In realtà, questo è vero, ma non è corretto per questa domanda. Data Mapper è un livello di isolamento. Sarebbe un approccio utile se ci fossero più fonti di dati da riunire insieme.

    
risposta data 20.07.2013 - 14:28
fonte

Leggi altre domande sui tag