Преимущества объекта Domain, представляющего только элементы одного типа, по сравнению с возможностью представления нескольких различных типов элементов - PullRequest
1 голос
/ 15 декабря 2009


1) Насколько мне известно, каждый экземпляр объекта домена (на уровне BLL) должен полностью представлять элемент домена (сотрудник, книга, автомобиль и т. Д.).


Итак, что является преимуществом наличия двух типов доменных объектов, скажем, одного типа, представляющего определенный форум, и другого типа, представляющего тему (и) в этом форуме, по сравнению с наличием одного типа объекта домена, представляющего как форум, так и тему ( s) внутри этого форума?

Другой пример: в чем преимущество наличия двух типов доменных объектов, один из которых представляет экземпляр автомобиля, а другой представляет экземпляр автобуса, вместо того, чтобы иметь один тип доменного объекта, представляющего как автомобиль, так и автобус


2) Должен ли экземпляр объекта домена всегда представлять отдельный элемент определенного типа, или они также могут представлять группу элементов одного типа? Например, существует ли ситуация, когда один экземпляр объекта должен представлять группу сотрудников, а не только одного сотрудника?


спасибо

Ответы [ 2 ]

1 голос
/ 16 декабря 2009

Хорошая причина, по которой два используют несколько доменных объектов, заключается в том, чтобы лучше обрабатывать код следующим образом:

if (o.VehicleType == VechileType.Car)
    DoSomthing();
else if (o.VehicleType == VechileType.Bus)
    DoSomethingElse();

Эти условные операторы имеют способ дублировать себя вокруг системы, и каждый раз они могут слегка различаться. Использование различных типов для представления автомобиля / автобуса делает всю эту логику лучшим местом для путешествия. Если вы не видите такой логики, скорее всего, вам не нужно беспокоиться о сложности нескольких типов.

В этой статье есть несколько хороших примеров замены условного выражения полиморфизмом рефакторинга.

1 голос
/ 15 декабря 2009

Ответить (1): Это суждение, которое вы должны делать постоянно. Спросите, два типа вещей более похожи, чем они разные? Иногда это может пойти в любую сторону, и два хороших программиста могут решить по-разному. Помните наследование , именно так вы можете получить лучшее из обоих миров: общая функциональность организована централизованно со всем необходимым индивидуализмом. Это главное для oop / d.

(Вы можете даже в конечном итоге разделить представление элемента домена среди нескольких объектов, управляемых принципалом единой ответственности , но я бы не стал беспокоиться об этом сначала. Один класс на Элемент домена - отличное место для начала, и он очень прост.)

Ответить 2: Да, у вас часто есть доменные объекты, представляющие как группы элементов, так и отдельные элементы. Довольно часто у вас будет и объект car , и объект cars , который называется collection object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...