Может ли пограничный класс взаимодействовать с классом сущностей? - PullRequest
1 голос
/ 08 ноября 2010

Например: ссылка

Описано ли это выше, или было бы лучше создать в Controller больше методов, которые обрабатывают данные, отправляемые / извлекаемые без взаимодействия между пользовательским интерфейсом иEntity?

В общем, когда разрешено (если оно есть) классу границ взаимодействовать с Entity Class?

1 Ответ

0 голосов
/ 08 ноября 2010

Зависит от того, хотите ли вы / должны ли вы неукоснительно придерживаться паттерна Boundary-Control-Entity:

  • Если да (вам нужно придерживаться шаблона): тогда нет, объект Boundary может говорить только с объектами Control. См. Таблицу внизу на этой странице (также хорошее описание шаблона).
  • Если нет: тогда да, может!

Это не значит быть бойким. Сомнительно, что такое строгое разделение является хорошей практикой проектирования. На картинках это выглядит красиво: Граница, Контроль и Сущность в красивых горизонтальных слоях с сообщениями, проходящими только по соседним слоям.

Реальность несколько иная. Строгое разделение может привести к двум проблемам:

  1. Распространение сквозных методов. Вы намекаете на это. В результате вы получаете объединение методов на контроллерах, которые не делают ничего, кроме как проходят к базовым объектам.
  2. Классы анемичных сущностей. Вместо того, чтобы сущности были домом для поведения «данные +», они становятся контейнерами данных только при переходе всех поведений на контроллеры. Это не очень хорошая вещь .

Примечательно, что в Domain Driven Design Эрик Эванс рекомендует создавать Сервисы (сродни Контроллерам) только в том случае, если у рассматриваемой логики нет жизнеспособного дома ни в одном из Доменных Классов (Сущностей).

...