Considerando il favorire la composizione rispetto all'ereditarietà e l'osservazione di vari modelli di progettazione, esistono diversi approcci per modellare un dominio.
Supponiamo di avere Entità che sono molto simili sotto alcuni aspetti, ma che differiscono ampiamente quando si tratta di implementazioni tecniche. Per provare a ritrarre lo scenario, ecco l'esempio classico di auto.
(Vehicles)
Car
Truck
Van
Dal punto di vista dell'utente, sono praticamente tutti uguali (tutti i veicoli). Dal punto di vista DDD , auto, camion, furgone condividono alcuni stati comuni (numero di pneumatici, motore, ...) e determinati comportamenti (sterzata, cambio di velocità, ...). Tuttavia, hanno anche vari stati e comportamenti che sono unici come il letto del camion, il magazzino interno del furgone o le auto da 5 posti. Col passare del tempo ci sarà una buona quantità di cambiamenti. La convalida sarebbe diversa per certe cose e simile per gli altri. Cambiare velocità, sterzo, ecc. Sono simili, tuttavia tirare il rimorchio è opzionale e anche quello è diverso tra ad es. il furgone e il camion.
Come concepiresti questo per far fronte al cambiamento, e tuttavia rimanere ASCIUTTO e aderendo alla mentalità DDD ? Per favore spiega come andresti a farlo (pseudo codice?) E menziona qualsiasi schema o strategia di progettazione che vorresti implementare per modellare questo dominio (semplice ma dinamico) e quali principi OO vengono applicati ecc.