Дизайн справки - объект изменяет и сохраняет другой объект
-
16-09-2020 - |
Вопрос
У меня есть некоторые проблемы, думая о проблеме дизайна и думали, что сообщество может помочь указать мне в правильном направлении. Я моделирую систему управления сотрудниками для моей компании и пришел к проектному вопросу, который у меня в тупик.
Вот сценарий:
У меня есть класс сотрудника, который класс сотрудников имеет список офисных объектов (где работает сотрудник и работает). У меня есть требование создать способность передавать сотрудника между офисами. Существует несколько дополнительных накладных расходов для запроса на передачу (одобрения, отзывы), но в конце концов, одобрения моего объекта передачи должны привести к изменению списка офисных объектов работника.
Я использую C #, EF4 и POCO для моих объектов. Я не уверен, как моделировать объект передачи. Он будет сохраняться в течение некоторого времени и не может быть завершен в течение нескольких дней (одобрения должны завершить до того, как его разрешено продолжать). Объект передачи должен знать сотрудника для модификации и нового офиса для сотрудника. Я чувствую, что это плохой дизайн, чтобы сделать сотрудника ребенку объекта передачи и модифицировать его там. Мне просто интересно, есть ли у кого-нибудь советы о том, как моделировать это требование.
Решение
Вы можете лечить передачу как совершенно отдельный объект - работой ряд.
как минимум, он будет содержать следующие данные: 1. Уникальный идентификатор работника. 2. Уникальный идентификатор передачи от офиса. 3. Уникальный идентификатор передачи в офис. 4. Индикатор состояния для прогресса передачи.
Это легкий объект, который не содержит никаких других объектов - оно ссылается на них уникальным идентификатором.Когда передача обрабатывается, проверьте, что сотрудник и передача в офисы все еще действуют, затем обновить коллекцию офисов сотрудников.
Единственное предпосылка для этого решения заключается в том, что работник и офисы должны существовать до создания передачи.
Другие советы
Звучит как передача - это не объект, это рабочий процесс.Посмотрите на Фонд Windows Workflow ... Вот вот Хороший пример QuickStart.
Если вы думаете об ответственности объекта передачи, это управлять передачей работника в другой офис.Я бы разработал это с объектом передачи отделен как от сотрудника, так и от офиса, но имея ссылку на каждый.Объект передачи, вероятно, будет иметь ряд значений о состоянии утверждения и достижения ценностей конечного состояния (отмененное или окончательное одобрение) Объект передачи может выполнить действие сотрудника с новым офисом и отметить себя как завершено.Это не плохой дизайн для объекта передачи, чтобы иметь ссылки на другие объекты.Связь между передачей и работником (а также передачей и офисом) в этом случае «использует» отношения.