|
|
|
Обращение к сервисам
|
|||
|---|---|---|---|
|
#18+
Добрый день! Вот есть у меня скажем несколько сервисов: ProductService , DeliveryService , PaymentService , ReportService , TrasportService что все они делают не суть важно, будем считать, что коэффициент связности у них крайне маленький, то есть скажем не более двух связей имеет каждый сервис с другим сервисом. И есть всякие контроллеры или другие сервисы, которые используют указанные выше сервисы. и часто бывает так, что нужны эти сервисы по две или три "штуки". То есть скажем в контроллерах часто нужны ProductService и ReportService . Было решено сделать базовый контроллер и в нем сделать инъекцию этих сервисов примерно вот в таком виде: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А потом в базовых контроллерах использовать эти методы для обращения к сервисам, вместо того, чтобы в каждом контроллере делать инъекцию. Чем плох такой подход - мы закрываем наследование. Идея #2: создаем класс окружение, которое содержит в себе все сервисы: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. А в контроллерах или еще где, в общем, там где нужно инъектим только Environment . Минусы такого подхода я пока не вижу. А вы? Если есть еще варианты, буду рад узнать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 16:39:26 |
|
||
|
Обращение к сервисам
|
|||
|---|---|---|---|
|
#18+
scymaksи часто бывает так, что нужны эти сервисы по две или три "штуки". Нужно рассмотреть пару примеров, когда нужно несколько сервисов, чтобы в результате не оказалось что бизнес-транзакция уехала в контроллер. scymaksЧем плох такой подход - мы закрываем наследование. Кому закрываем? От чего закрываем? Если у вас все контроллеры будут наследоваться от своего общего предка, то никакой проблемы управлять такой иерархией не будет. Проблема может быть только если контроллерам нужно будет вдруг наследоваться от не контроллеров. Что было бы странным. Минус в том что всем контроллерам доступны все сервисы, что делает слишком доступной возможность использовать несколько сервисов из контроллера, вместо того чтобы создать новый бизнес-метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 16:45:27 |
|
||
|
Обращение к сервисам
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а идея с Environment вам не нравится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 16:54:52 |
|
||
|
Обращение к сервисам
|
|||
|---|---|---|---|
|
#18+
scymaksа идея с Environment вам не нравится? Ничем не лучше BaseController... Разве что если его оформить правильно и поместить туда логику вызова нескольких сервисов, вместо того чтобы держать её в контроллерах. Будет эдакий MasterService ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 16:58:26 |
|
||
|
Обращение к сервисам
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, была идея сделать Environment как класс Facade сервисов... Но тут надо не переработать... а то получится божественный класс.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 17:30:26 |
|
||
|
Обращение к сервисам
|
|||
|---|---|---|---|
|
#18+
scymaks, нужно конкретику смотреть, почему именно множественные сервисы вызываеются в контексте одного запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2013, 17:38:40 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=246&tid=2130043]: |
0ms |
get settings: |
17ms |
get forum list: |
30ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
59ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
89ms |
get tp. blocked users: |
3ms |
| others: | 366ms |
| total: | 611ms |

| 0 / 0 |
