Справочная информация: Я пытаюсь реализовать свой сервер с отдельными уровнями Controller, Service и Dao. Я не уверен, как должен быть организован модуль уровня сервиса.
Например, давайте рассмотрим модуль UserService
, который является подмодулем в модуле уровня сервиса. Однако я не хочу создавать один файл UserService
, а скорее разделяю его на отдельные файлы, например, класс FetchUsers
, который является частью службы User и будет иметь разные методы для выборки пользователей, например filterBySomething(params)
который также будет включать некоторые бизнес-логи c, поэтому они должны быть на уровне обслуживания.
Если я не разделю UserService на отдельные модули, в один, и это также нарушит SRP.
Вопрос: Я могу придумать два способа достижения этого, какой из них лучше? Если есть способы лучше, чем эти два, или мне не следует пытаться достичь этого, предложите альтернативы.
Метод 1:
- services
- user
- index.js - directly exports modules inside user service
- FetchUser
- CreateUser
The index.js will do something like this:
FetchUser = require('./FetchUser');
module.exports = {
FetchUser: FetchUser
}
Controller will use it as:
UserService.FetchUser.filterBySomething()
Метод 2:
- services
- user
- index.js - exports methods of individual modules, not the modules themselves
- FetchUser
- CreateUser
The index.js will do something like this:
FetchUser = require('./FetchUser');
module.exports = {
filterBySomething: FetchUser.filterBySomething
}
Controller will use it as:
UserService.filterBySomething()
Метод 1 выглядит так, как будто в нем недостаточно инкапсуляции. Метод 2 имеет хорошую инкапсуляцию, но требует от меня поддержки индекса. js внутри пользовательской службы всякий раз, когда я хочу добавить / удалить что-либо из любого файла.