Disseny guiat pel domini

La programació orientada a objectes és una eina molt potent degut a que es basa en un paradigma de modelatge i proveeix una implementació de les construccions del model. Java i altres eines permeten crear objectes i relacions directament anàlogues al model conceptual d’objectes.
El disseny guiat pel domini és un enfoc per al desenvolupament de software amb necessitats complexes mitjançant la connexió de la implementació amb un model en evolució dels conceptes clau del negoci. 1
Un bon model del domini captura les abstraccions i les informacions essencials necessàries per entendre el domini en el context dels requisits actuals i ajuda a la gent a entendre el domini- seus conceptes, terminologia i relacions-.
El disseny guiat o orientat pel domini (DDD) no és exactament una tecnologia, sinó una guia de pràctiques i terminologies per d’organitzar les aplicacions i estructurar el codi. DDD es basa abstraure i "naturalitzar" la forma en què s’interactua amb el sistema.
Aquest terme va ser encunyat per Eric Evans, en el llibre “Domain Driven Design”.2
Aquesta enfoc complementa molt bé l’arquitectura MVC , especialment en la capa del model.

Terminologia utilitzada en el disseny guiat pel domini:
• Entitat: Un objecte definit fonamentalment per un fil de continuïtat i
identitat 2. El concepte d’identitat adoptat per DDD va més
enllà de les operacions dels llenguatges orientats a objectes que
proveeixen una “identitat” a cada objecte. (per exemple l’operador == en
java).
El concepte d’identitat, des del punt de vista del DDD, és un atribut més metafísic, que emergeix del model i pren significat a través del domini. És aquest concepte el que guia el disseny de l’operació d’identitat entre objectes del domini. Per exemple, el moltes aplicacions, l'atribut “email” s’utilitza com a identificador de dues instàncies d’objecte de tipus Usuari, ja que dos usuaris no poden tenir el mateix email.
• Value Object: un objecte que no té una identitat. Normalment
aquest tipus d’objectes són immutables.
• Repositori: Objectes utilitzats per emmagatzemar, recuperar, i eliminar objectes del domini de diverses implementacions d’emmagatzematge.
• Service: Tipus d’objecte que realitza operacions que no pertanyen conceptualment a un objecte concret.
• Aggregate: clúster d’objectes del domini que pot ser tractat com a una única unitat.
• Factoria: Tipus d’objecte utilitzat per crear Aggregates complexos.
Related Posts