Domain Model – serce aplikacji

Całkiem nie­daw­no pisa­łem o two­rze­niu dia­gra­mów klas a kon­kret­nie mode­lu dzie­dzi­ny w odpo­wie­dzi na post pew­ne­go blo­ge­ra. Wymiana poglą­dów skoń­czy­ła się z e stro­ny adwer­sa­rza na zwró­ce­niu uwa­gi, iż dia­gram klas może poka­zy­wać wie­ce niż mój (bo może) ja zaś zwró­ci­łem uwa­gę na fakt, że dia­gram klas to jakiś model a model powi­nien mode­lo­wa jed­ne coś. Pokazanie na jed­nym dia­gra­mie klas dużo chy­ba mija się z celem bo moż­na zabrnąć w rejon gdzie spraw­dza się rekla­ma Banki od wszyst­kie­go są do nicze­go.

Tak więc for­su­ję tezę, że dia­gram klas to albo np. tak­so­no­mia albo np. model dzie­dzi­ny. W tym dru­gim przy­pad­ku jest to wsad do mode­lu opro­gra­mo­wa­nia, ten wsad to Model z wzor­ca MVC, a Model ten naj­le­piej stwo­rzyć sto­su­jąc zasa­dy [[DDD]]. Jednak w tym wypad­ku Model nie powi­nien być anemiczny:

Jednym z naj­częst­szych powo­dów powsta­wa­nia ane­micz­nych mode­li dome­no­wych jest spo­sób pro­jek­to­wa­nia apli­ka­cji w opar­ciu o wcze­śniej stwo­rzo­ny sche­mat bazy danych. To pro­wa­dzi to do tego, że model dome­no­wy powsta­je w sku­tek mapo­wa­nia tabel do klas posia­da­ją­cych odzwier­cie­dlo­ne kolum­ny w posta­ci wła­ści­wo­ści. Jedynym wyzwa­niem dla nie­któ­rych osób może być mode­lo­wa­nie rela­cji, któ­re w przy­pad­ku bazy danych są klu­cza­mi obcy­mi, zaś w przy­pad­ku obiek­to­we­go mode­lu powin­ny być rela­cja­mi do innych obiek­tów. Nie bra­ku­je oczy­wi­ście przy­kła­dów, gdzie rela­cje w mode­lu dome­no­wym two­rzo­ne są rów­nież w opar­ciu o klu­cze obce, co cał­ko­wi­cie zaprze­cza obiek­to­we­mu pro­gra­mo­wa­niu (źr. za pomo­cą Domain Model ? !FrAgile Thinking.)

Polecam cały arty­kuł (no ja pomi­ja­łem część zwią­za­ną z kodem bo nie pro­gra­mu­ję ;). Polecam przy oka­zji arty­kuł: http://​msdn​.micro​soft​.com/​e​n​-​u​s​/​m​a​g​a​z​i​n​e​/​d​d​4​1​9​6​5​4​.​a​spx

Inne artykuły na podobny temat

Dodaj komentarz

Twój adres email nie zostanie opublikowany

Komentuj i zadawaj pytania autorowi.

Identyfikator *
E-mail *
Witryna internetowa

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.