2013-09-11 2 views
1

Сверху моей головы я подумываю о том, чтобы писать свои серверные задачи как один большой сервис и вводить все объекты dao в эту службу - что-то вроде этого:Что было бы лучше всего использовать при использовании нескольких инъецированных DAO

public class MyServiceImpl extends RemoteServiceServlet implements MyService { 
@Inject 
MyDAO1 myDAO1; 
@Inject 
MyDAO2 myDAO2; 
@Inject 
MyDAO3 myDAO3; 

... 
//20 methods 
// 
} 

Является ли один большой сервис способ пойти или есть какой-то другой, лучший образец для этого?

+0

Я думаю, что это охватывает его: http://stackoverflow.com/a/16234079/210445 – pauli

+3

@osh, нет, один большой сервис не очень хорош, так как он нарушает [принцип единой ответственности] (http://en.wikipedia.org/wiki/Single_responsibility_principle). Вы по существу создаете объект Бога, который будет очень трудно поддерживать. Вы должны подумать о том, какие обязанности несет ваш серверный слой, а затем вы должны тщательно разделить эти обязанности между несколькими службами. –

ответ

0

Вы должны создать службу для каждого «домена» задач. Например, служба для управления пользователями с методами, позволяющими регистрировать новых пользователей, отправлять восстановительные пароли по электронной почте, временно отключать пользователя, получать список пользователей, включенных в настоящее время, и т. Д.

Предлагаю вам ознакомиться с шаблон ServiceLayer, описанный в статье Мартина Фаулера Patterns of Enterprise Application Architecture (http://martinfowler.com/books/eaa.html).

уровень услуг определяет границу приложений '[Кокбурн PLoP] и своего набор доступных операций с точки зрения взаимодействия клиентских слоев. Он инкапсулирует бизнес-логику приложения, контрольные операции и ответы COOR-dinating в осуществления своих операций (http://martinfowler.com/eaaCatalog/serviceLayer.html)

Смежные вопросы