Mit értek a területvezérelt tervezésből
On november 15, 2021 by adminDDD 101
Minél nagyobb a projekt, annál nehezebb a karbantartása. Ezen segíthet, ha az alkalmazást kisebb területekre bontjuk az üzleti szabályaik, az úgynevezett tartományok szerint.
A tartomány alapvetően a tudás egy területe, amely vagy nyilvános, mint például a sakk szabályai, vagy privát, mint például egy nonprofit szervezet üzleti szabályai.
Egy összetett tartomány valószínűleg más tartományok tudását használja. Például egy nonprofit szervezet, amely online sakkot tanít, tud a sakkról, az online platformokon keresztül történő tanításról, és – még akkor is, ha Önt mint hallgatót nem terheli – a pénzügyeiről.
A DDD-ben a tartomány minden egyes részterületét kötött kontextusoknak nevezik, mindegyiknek saját modellje van a világról, amely speciális kódegységekből, úgynevezett építőelemekből épül fel. Itt az entitásokra és az értékobjektumokra fogok koncentrálni, mindkettőre objektumként lehet hivatkozni.
Az entitások olyan objektumok, amelyek a tartományon belül egyedinek hivatottak lenni. Ezt úgy érjük el, hogy egy vagy több tulajdonságot használunk egy adott entitás azonosítására. Például két felhasználónak, akik ugyanazt a nevet használják egy rendszerben, mindig különböző e-mail címei lesznek, mivel az e-mail címek nem ismétlődhetnek – az entitásokat leggyakrabban egy azonosítóval, néha pedig a proprieties kombinációjával különböztetik meg.
Az értékobjektumok ezzel szemben nem rendelkeznek azonosítóval, így csak a tulajdonságaik segítségével lehet megkülönböztetni két példányt. Vegyünk például két gyalogot (a sakkfigurát), ugyanúgy néznek ki, ha ugyanabból a játékkészletből származnak és ugyanolyan színűek, tehát nem számít, ha felcseréljük őket. A DDD-ben az értékobjektumok megváltoztathatatlanok, így könnyebb velük érvelni.
Adatintegritás
Egy lehatárolt kontextus nem tárja fel minden objektumát, hogy garantálja az adatintegritását. Ehelyett néhány aggregátumgyökeret egyfajta nyilvános interfészként tár fel saját magához.
Az aggregátum nem más, mint egy más objektumokból álló entitás. Pontosabban, egy aggregátum olyan kapcsolódó objektumok csoportja, amelyeket az adatok megváltoztatásakor egységként kezelünk.
Vélemény, hozzászólás?