Размещение методов обслуживания - PullRequest
1 голос
/ 13 ноября 2011

Предположим, у меня есть два класса обслуживания со следующими методами:

  • GroupService
    • createGroup ()
    • deleteGroup ()
    • updateGroup()
    • findGroup ()
  • UserService
    • createUser ()
    • deleteUser ()
    • updateUser ()
    • findUser ()

Теперь я думаю об эстетике этих классов.Представьте, что мы хотим реализовать метод, который ищет всех пользователей определенной группы.Какой класс обслуживания отвечает за такой метод?

Я имею в виду, возвращаемое значение - это пользователь (или, может быть, совокупность пользователей), а параметр (что означает имя группы) - это группа.Так какой класс обслуживания является лучшим местом для размещения этого метода?

Ответы [ 4 ]

2 голосов
/ 13 ноября 2011

Я бы предложил Сервис пользователя, так как вы запрашиваете объекты пользователя.Служба должна защищать потребителей от деталей реализации (механизм сохранения и т. Д.). Если пользователи были возвращены из групповой службы, для этого потребуется знание о том, как пользователи сохраняются.

2 голосов
/ 13 ноября 2011

Ни то, ни другое. Метод принадлежит к классу Group, который возвращается createGroup () и findGroup (). Если только эти две службы являются вашими опциями, то используйте GroupService, поскольку все аргументы GroupService получают имена групп в качестве аргументов. Обычно тип возвращаемых методов меняется, чем аргумент.

1 голос
/ 14 ноября 2011

Я бы создал другой класс под названием «Членство» и имел бы методы для поиска пользователей в группах или группах, к которым принадлежит конкретный пользователь.Я склонен ошибаться в сторону большого количества небольших классов, а не большого количества больших классов.

1 голос
/ 13 ноября 2011

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

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