Ad esempio, applica una tipica applicazione Silverlight Line-of-Business. In primo luogo, abbiamo una tabella Product nel database, che contiene campi di ID, Nome, Prezzo, ecc.
Quindi, sul lato server, dovremmo avere una classe Product Entity nel Data Access Layer, che ha proprietà di ID, Name, Price, ecc;
Quindi, dovremmo avere una Product DTO Class con proprietà di ID, Name, Price, ecc; Quindi, sul lato client (Silverlight), abbiamo la classe Product DTO con proprietà di ID, Name, Price, ecc. Come contratto dati per comunicare con il server;
Quindi, dovremmo avere una Product ViewModel Class, che alse ha le proprietà di ID, Name, Price, ecc per legare con la View.
Questi numerosi livelli di oggetti simili non violano il principio Non ripetere te stesso?
Cosa succede se il modello di dominio aziendale stesso subisce frequenti cambiamenti? Ad esempio, il cliente desidera rimuovere / aggiungere nuove proprietà al prodotto, il che farà sì che tutti i livelli cambino il suo codice.
Introduciamo un livello DAL addizionale nell'ipotesi che il database sottostante venga modificato, ma nel mondo reale, il modello di business stesso cambia molto più frequentemente dell'accesso ai dati o della logica di presentazione.