DDD dziedziczenie Aggregation Root

Odpowiedz Nowy wątek
2019-01-10 20:50
W2K
0

Cześć,

Czy poprawnym w sensie DDD jest dziedziczenie klas będących agregatami ? Chodzi mi o sytuację w stylu:

class Item : DomainEntity { .... }

class IndustryItem1 : Item {...}

class IndistryItem2 : Item {...}

Item nie jest bytem abstrakcyjnym abstrakcyjny - reprezentuje konkretny przedmiot więc może istnieć samodzielnie. IndustryItem1 i IndustryItem2 to wersje Item z propertkami dobranymi pod konkretne zatosowania. Głowne operacje w systemie wykonywane są na Item (są niejako abstrakcyjne) ale są też operacje które wymagają specyfikacji i konkretnych dodatkowych właściwości.
Czy takie zamodelowanie ma sens ?

Pozostało 580 znaków

2019-01-10 22:50
0

IMHO to tak. Jednak jeżeli to mają byc osobne i równoważne agregaty, to każdy ma swoje repo i możliwie jest jak najbardziej niezależny od innych.


Limitations are limitless

> ##### Ola Nordmann napisał(a)
> Moim językiem ojczystym jest C++ i proszę uszanować to, że piszę po polsku.

Pozostało 580 znaków

2019-01-11 03:56
Bambaryła
0

A co to DDD nie może istnieć bez Repo? Jestem pewien na 80%, że mówisz o czymś, co jest wartością, a nie agregatem i wynika to z błędnych założeń co do modelu.

Przy dużej złożoności można użyć czegoś, co się nazywa "Abstract Core" ale raczej nie w twoim przypadku.

Pozostało 580 znaków

2019-01-11 04:35
Bambaryła
1

są też operacje które wymagają specyfikacji i konkretnych dodatkowych właściwości

Może ty potrzebujesz polityki?

Pozostało 580 znaków

2019-01-11 05:25
3
class Item : DomainEntity { .... }

class IndustryItem1 : Item {...}

class IndistryItem2 : Item {...}

Konkrety się liczą. Czym jest IndustryItem1? Cały myk z DDD polega na tym, że kod ma odzwierciedlać wiedzę biznesową, a mówienie o czymś IndustryItem1 zaciemnia obraz i sytuacji i jest anty-DDD, bo łamie zasadę wspólnego języka ("ubiquitous language, " - wszechobecny język).

Bo to zakłóca komunikacje, jak się używa innej nazwy na byty, które naprawdę się nazywają inaczej (tutaj IndustryItem1 a naprawdę możesz mieć np. Product, Car czy Screw albo cokolwiek innego tam masz). A jednak to ma znaczenie, co modelujesz.

IndustryItem1 i IndustryItem2 to wersje Item z propertkami dobranymi pod konkretne zatosowania.

Tu się rodzi inne pytanie, niezwiązane może z DDD, a po prostu z programowaniem - czy fakt, że coś potrzebuje paru nowych właściwości to wystarczający powód do dziedziczenia?


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
edytowany 2x, ostatnio: LukeJL, 2019-01-11 05:27

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0