Re[2]: Anemic Domain Model vs Rich Domain Model
От: GlebZ Россия  
Дата: 27.05.09 13:12
Оценка:
Здравствуйте, IB, Вы писали:

IB>Здравствуйте, GlebZ, Вы писали:


GZ>>ФАУЛЕР. Фаулер дал другую терминологию: Transaction Sript и Domain Model.

IB>Автор терминов Rich Domain Model и Anemic Domain Model — Фаулер.
+1
IB>Кратко говоря — Фаулер разбирая Domain Model говорит, что Rich — это правильная Domain Model, а Anemic — не правильная. Таким образом, к Transaction Sript это не имеет никакого отношения, если говорить о Фаулеровских терминах.
-1 Только не тебе, а Фаулеру. В книжке, в которой он полновесно хотел описать все паттерны, он вполне справедливо запутался. Если брать саму постановку вопроса — то Anemic и Transaction Script, одно и то же. Далее, после данной книги, когда оказалось что Transaction Script может описывать предметную область, а он это не учел, то тут и начался у него переполох в уме.
IB>Так что прежде чем писать про Anemic vs Rich, не плохобы написать, что такое вообще Domain Model, чего я добивался еще в прошлый раз.
Что такое модель предметной области? Она есть всегда и везде. Ибо по ней и создается архитектура.

GZ>>Под Domain Model некоторые понимают Rich Domain Model, что не является правдой,

IB>Это ты Фаулеру скажи..
Ежели смотреть обсуждения нескольких лет назад, то ему это уже говорили. Что и породило новую терминологию.

GZ>>МИФ. Существует миф, что для объектов Rich Domain Model обязательно наличие прозрачных reference между собой. Этот преступный миф не является правдой. Он не имеет отношения ни к Rich, ни к здравому смыслу. А имеет отношение к понятиям statefull, stateless и чисто опциональному lazy load. Единственное отличие, в Anemic – состояние разнесено с методами получения ссылочных объектов. В Rich – это единый объект.

IB>Либо ты сам себе противоречишь, либо я не понимаю о чем ты.
Ничего не противоречу. Между функцией получения, и ссылкой есть большая разница. И она сколько не физическая, а логическая.

GZ>>2. Инкапсуляция.

IB>Хочешь сказать, чот в Anemic ее нет или что в Rich она выше?
Я это уже сказал.

GZ>>Программисту, использующему данный объект, недоступно его состояние, кроме как определенный интерфейс.

IB>Проблема только в том, что в реальной жизни один фиг в бизнес объекте есть прямой доступ к данным, максимум обернутыми в свойства. В противном случае объект должен знать обо всех сценариях своего использования и меняться при появлении каждого нового сценария.
Ну возьмем к примеру ACL. ACL как данные, программисту не нужны, а иногда вредны. А вот средства проверки ACL для той или иной операции востребованы, и вполне могут жить в объекте.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.