Estou dando manutenção em um projeto e preciso nomear “donos para as classes” igual a metodologia crystal. Tenho alguns pacotes e ao inves de colocar um dono na classe vou colocar um dono no pacote. Minha estrutura é a seguinte:
DAO - comunicação com o banco
Service - Regra de negocio
MB - comunicação com html
colocarei uma pessao para cada pacote, a minha dúvida é a seguinte: o MB tem acesso a todos os Service’s desta forma se o dono do MB quiser ele consegue criar instancias de varias classses Service, gerando uma regra de negocio no MB. É certo eu criar uma classe Service para cada MB e modificar o acesso das outras classes Services para não serem acessadas fora do pacote, ou existe uma forma de limitar o MB a instanciar apenas um Service?
Renato, o que eu costumo fazer é considerar que tipo de regra eu pretendo resolver em cada camada.
O MB poderia ser responsável pelo controle das ações contidas em suas visões, enquanto seus serviços deveriam ser responsáveis pelo controle das regras da sua aplicação (API de negócio).
Nesse ponto vem o seu julgamento, tratar cada comportamento e colocar ele na camada onde você acredita que ele pertença.
Eu Sempre tento ter em mente, se eu um dia precisar alterar esse comportamento eu terei que mexer em outra camada? A melhor resposta para essa pergunta é não!
Ou seja, você não precisa ter necessáriamente um contrato específico com sua camada de negócio através dos seus MB, você tem, que pensar que essa “conexão” será feita na ligação entre comportamentos da sua visão e comportamentos da sua aplicação.