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.