Простой ОО дизайн: где поставить Добавить ответственность? - PullRequest
1 голос
/ 27 февраля 2011

В моем домене приложения есть Пользователи.У этого также есть Организации.Пользователи могут создавать организации.

Мой вопрос: На каком контроллере я должен установить метод CreateOrganisations?Это относится к UserController?Или это входит в OrganisationController?И как мне принять это решение?

В любом случае я планирую использовать метод Add для модели организации.

Есть мысли?

Ответы [ 2 ]

3 голосов
/ 27 февраля 2011

принадлежит организации по контроллеру.

Контроллер организации должен управлять любым созданием / изменением модели организации.Пользователь не должен знать, как или что участвует в создании организации.Если вы даете им возможность создавать организации, вы объединяете логику.Вы принимаете это решение, потому что у вас есть и Пользователь, и Контроллер организации.

Если ваш пользователь / организация на самом деле не оправдывает свое существование, то есть они не контролируют много, а затем объединяют их в один.

Если существуют оба класса, я голосую за организацию.

0 голосов
/ 27 февраля 2011

Как вы сказали, пользователь может создать организацию, поэтому, если организация не отслеживает владельца (маловероятно), вам следует делегировать метод CreateOrganization пользователю.Основная идея, о которой я могу подумать, будет такой:

  • Пользователь: создает организации, вызывая OrganizationRepository :: Add (OwnerId)
  • Организации: может быть создан только с учетом идентификаторавладелец.

Если ( и только если ) вам не нужно отслеживать создателя организации, тогда идея разместить метод Add непосредственно в организации, не требуя ничегоостальное выглядит хорошо.

Надеюсь, я смогу помочь!David

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