Отношения между классами - PullRequest
       14

Отношения между классами

0 голосов
/ 13 сентября 2010

У меня есть четыре класса:

  • Сотрудник - содержит только поля, которые хранить информацию о конкретном работник

  • EmployeeGroup - содержит только поля которые описывают тип работы сотрудника может сделать, каждый сотрудник принадлежит одному классов EmployeeGroup.

  • EmployeeDBase - содержит методы для добавление или получение сотрудника и группа сотрудников из базы данных.

  • EmployeeForm - использует методы EmployeeDbase для получить или добавить Employee или EmployeeGroup поля в базу данных. Это также имеет это собственные методы отображения информация в форме.

Я думаю, что отношения между Employee и EmplyeeGroup являются агрегированными, а также между EmplyeeForm и зависимости EmployeeDBase. Существуют ли какие-либо отношения между Employee и EmployeeForm, Employee и EmplyeeDBase (потому что оба работают с объектами Employee) .---

Ответы [ 2 ]

0 голосов
/ 14 сентября 2010

В целом согласен с @Benjol. Здесь есть два разных типа отношений. Employee <-> EmployeeGroup - это отношение «домен», то есть отражает правила и характеристики проблемного пространства. Поэтому наиболее целесообразно моделировать как стандартную ассоциацию - многие: 1, если сотрудник может быть членом только одной группы, многие: многие в противном случае. Если честно, я бы не стал зацикливаться на агрегации. Мощность важнее.

Другие отношения скорее архитектурные, чем доменные. Я бы задокументировал это по отдельности - желательно со ссылкой на один или несколько архитектурных шаблонов. Взгляните на каталог Мартина Фаулера для хороших примеров.

Наконец, два замечания:

  1. Из вашего описания видно, что в проекте Employee & EmployeeGroup представлены как простые объекты значений со всей бизнес-логикой в ​​EmployeeForm и EmployeeDBase. Я вообще с подозрением отношусь к перемещению доменной логики из доменных классов. Бывают случаи, когда это оправдано - обычно для действительно простых / быстрых хакерских систем. Все, что имеет какую-либо существенную доменную логику - и / или ожидается, что он будет иметь нетривиальный срок службы - обычно легче поддерживать, если логика домена лучше инкапсулирована с классами домена, а не связана с уровнями ui или db. (см. «Эрик Эванс« Проект, управляемый доменом »).
  2. «EmployeeGroup» - не самое информативное название. Из твоего описания лучше было бы назвать «EmployeeRole» или что-то подобное. Похоже, что это определено в книге, поэтому вы не можете что-то изменить.
0 голосов
/ 13 сентября 2010

Ваш вопрос звучит немного ... теоретически. Почти как домашнее задание.

Несмотря на это, я думаю, вам не следует путать классы Employee & EmployeeGroup - которые явно представляют собой сущности реального мира, а также EmployeeDBase и EmployeeForm - это программные артефакты, внутренние для вашего приложения.

...