К какому классу обслуживания относятся методы, извлекающие списки вложенных объектов? - PullRequest
0 голосов
/ 09 ноября 2018

Это применимо к любому языку, но я использую Java для этого, так что ...

public class Egg {
    ...
}

public class BirdNest {

    private List<Egg> eggs;

    ...
}

У меня также есть объекты базы данных, которые соответствуют этим классам. В основном, BirdNest имеет отношение 1: M с Egg.

Для выполнения действий по сохранению / извлечению этих классов у меня также есть BirdNestService и EggService.

Скажем, я хочу получить список яиц из данного птичьего гнезда.

У меня мог бы быть такой метод, как List<Egg> getEggs (int birdNestId);

У меня вопрос, к какому сервису должны относиться подобные методы?

Он выполняет операции на основе определенного гнезда птицы, поэтому вы можете утверждать, что он должен быть частью BirdNestService.

Опять же, вы можете утверждать, что предмет, который он получает, это Egg, поэтому он должен принадлежать EggService.

Ответы [ 6 ]

0 голосов
/ 18 ноября 2018

Вы получаете атрибут сущности, поэтому он является частью гнезда. Ежу понятно.

Теперь, если у вас есть атрибут birdnestid, и вы отфильтровали базу данных яиц по этому атрибуту, она будет частью объекта egg, следовательно, вы положите его в службу egg.

Правило большого пальца: все в порядке, пока это атрибут.

Таким образом, вы можете использовать оба метода в двух разных сервисах.

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

Что вы должны использовать? Как правило, используйте подход сверху вниз: всегда выбирайте родителя, когда вам нужен ребенок

0 голосов
/ 18 ноября 2018

Метод списка getEggs (int birdNestId) запрашивает яйца, содержащиеся в определенном гнезде. То, как я об этом думаю:

  • Концептуально птичье гнездо хранит ручки (идентификаторы) для яиц. С точки зрения базы данных, внешние ключи к таблице яиц. Фактические яйца хранятся в яичном столе.
  • Следовательно, имеет больше смысла запрашивать у BirdNestService яйца из гнезда, которые могут выполнять некоторые проверки, например, является ли это действительным идентификатором гнезда, или нет, а затем извлекать ручки яиц.
  • Затем он может обратиться к EggService, чтобы получить список яиц, соответствующих списку идентификаторов.

Следовательно, я бы предпочел, чтобы в методе BirdNestService был метод метода List getEggs (int birdNestId) и я добавил метод в EggService, например так: Список getEggs (Список eggIds).

Но опять же, нет правильного или неправильного ответа. Это будет зависеть от того, что делает ваш дизайн чистым, последовательным и ремонтопригодным.

0 голосов
/ 17 ноября 2018

Я бы сказал, что это должен быть EggService.

Причина в том, что в данный момент вашему запросу нужны только яйца от Birds Nest, но, вероятно, это не всегда так. Завтра вам может понадобиться найти яйца на основе определенных характеристик, например, размера, цвета и т. Д. *

Следовательно, я бы пошел на EggService, потому что в конце концов вы пытаетесь идентифицировать яйца с определенной характеристикой - в данном случае принадлежащей определенной птичьей гнезде.

0 голосов
/ 16 ноября 2018

BirdNestService не должен нуждаться в методе, подобном List<Egg> getEggs (int birdNestId);.
Если вы хотите получить яйца из данного птичьего гнезда, то все должно быть просто так: List<Egg> myEggs = myBirdNest.getEggs()
BirdNestService должен иметь операции (методы), которые вы хотите использовать в отношении птиц, например BirdNest buildBirdNest(int amountStems, Bird byBird).

0 голосов
/ 09 ноября 2018

Если вы введете его в EggService, то этот сервис знает о концепции BirdNest (birdNestId), которая вам не нужна.

Итак, ответ BirdNestService.

0 голосов
/ 09 ноября 2018

Я думаю, что это часть BirdNestService, потому что Яйцо - это просто сущность, и оно не зависит от Гнезда. Но Гнездо содержит Яйца, иначе Гнездо бесполезно без Яиц. Гнездо зависит от яйца, но яйца не зависят от гнезда. По моему мнению, у Гнезда должна быть информация о том, какие яйца у него есть, и он уже содержит список яиц, как вы описали в классе, и яйца не должны помнить их идентификатор гнезда, если у вас нет очень сложного сценария, в котором вы хотите найти ID гнезда по их яйцам или некоторым конкретным требованиям.

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