Dúvida em modelagem de classes

[quote=hlegius][quote=“sergiotaborda”]Não. O correto é que o serviço sim altere o estado sem utilizar o serviçoPedido.
Cada serviço sabe o que está fazendo e seu papel no grande esquema das coisas. Ele tem liberdade e capacidade para tomar a decisão de alterar o estado. Como tal ele pode alterar o estado sozinho. [/quote]
Hum. Então um Serviço só falaria com outro Serviço caso uma rotina do ServiçoA.metodoA() fosse executar uma rotina inteira do ServiçoB.metodoB() que já existe pois essa rotina “B” também é necessária viver separadamente por causa de outra necessidade do domínio, penso eu. Correto ?
[/quote]

não se trata do métodoA ser chamado ou não. Não se trata de reaproveitamento de codigo.
Trata-se de consumir serviços. Você pode lavar o seu carro ou consumir o serviço de um lavador de carros.
Se o lavador não está disponível ou é caro demais vc mesmo faz - sabendo que a qualidade é menor.
quanto mais o serviço é especializado e/ou importante mais uso vc fará de um serviço e menos vc tentará fazer sozinho.

Então sim, se o serviço A consome B , o serviço A pedirá a B que execute uma ação completa ( aka irá chamar um método de B)
O importante é entender que não se trata de poupar codigo, trata-se de separar a responsabilidade dos serviços do sistema.
com o tempo os serviços evoluem ( mais simples, mais rápidos, mais eficazes … ) e quem os consome se beneficia sem querer.

Ao que entendi, caso a Action apenas deseje exibir uma busca, sem crimes ela criar o Criteria na Action e listar os elementos.
[/quote]

Perai , não foi isso que eu disse.

Errado


class Action {
 
  public void doSomething(){

           Criteria c = Crietia.search(Produto.class)         
           where("tipo").is("especial")

           List c = repositorio.findAllByCriteria(c);

           session.setAttribute("produtos" , c);
    
  }

}

Certo:

class Action {
 
  public void doSomething(){

           session.setAttribute("produtos" , repositorio.findAllSpecial());
    
  }

}

Actions não criam critérios. Isso é responsabilidade dos repositorios !

Sim. Mas o façade pode ele mesmo ser um repositorio. ( ele é um repositorio daquil o que vc está procurando)

:arrow: O Repositório é uma abstração, só representa a maneira de se obter as informações, é o elemento que modelamos quando necessitamos efetuar buscar por entities, outra nota é responsável por adicionar um novo item a coleção.

:arrow: O façade “ClienteA------>BasedeBadosFaçade—>BaseDeDados > Modelo > Elemento”

[size=18]; )[/size]

[quote=“sergiotaborda”]não se trata do métodoA ser chamado ou não. Não se trata de reaproveitamento de codigo.
Trata-se de consumir serviços. Você pode lavar o seu carro ou consumir o serviço de um lavador de carros.
Se o lavador não está disponível ou é caro demais vc mesmo faz - sabendo que a qualidade é menor.
quanto mais o serviço é especializado e/ou importante mais uso vc fará de um serviço e menos vc tentará fazer sozinho. [/quote]

Entendido. Boa explicação.

Ah sim, eu estava pensando no seu “modelo certo” só que falei Critéria. Viajei hehehe…

Então foi o que o Sergio também comentou. O próprio Façace pode ser um Repositório.

As coisas estão fazendo mais sentido agora. =)

:arrow: Action a navegabilidade do serviço, a criteria a responsabilidade para o façade repositorio