1
resposta

O bom uso da orientação a objetos com Frameworks (Fugir do modelo anêmico) é viável em Java?

Olá

Tenho procurado bastante sobre como fazer o melhor uso da POO, dos design patterns e dos princípios SOLID, entretanto parece que as infraestruturas do Java te forçam a modelar seu domínio de forma anêmica.

A minha impressão é que eu raramente faço uso (diretamente) dos princípios da OO.

Tenho um controller ou outro mecanismo de entrada como um handler de eventos, que vai chamar um serviço com alguma lógica de negócio, utilizando os modelos de forma anêmica, se apoiando nos POJO com getters e setters, ao final disso tudo persisto em um DAO ou um Repositório...

muda-se os padrões de camada/arquitetura, mas a essência é sempre essa.

E mesmo que você queira criar DTOs ou outros tipos de modelos que não sejam ali do domínio, algum framework ou especificação vai querer que você tenha um POJO...

Certamente que já utilizei de alguns padrões de projetos e de boas modelagens, muitas inclusive que aprendi aqui, mas são casos bem específicos do código...

Gostaria de saber se existe alguma forma limpa em Java de trazer isso para o modelo de domínio ou devo me conformar que a linguagem que eu utilizo tem essa estrutura orientada a POJO?

Essa dúvida está me incomodando há algum tempo.

Abraços

1 resposta

Boa noite, Franklin! Como vai?

Como vc mesmo disse, em alguns casos vc já fez uso de boas modelagens e padrões de projeto. Sendo assim, a linguagem que vc utiliza não é orientada a POJO.

O que ocorre é que o objetivo dos frameworks é justamente facilitar a vida do programador. Eles por baixo dos panos implementam padrões de projeto e boas práticas para fazer o grosso do trabalho de modo a deixar com a gente apenas a lógica de negócio que é o que nos interessa no final das contas. Ocasionando essa situação que vc muito bem observou. O que não tem nenhum problema, apenas indica que os frameworks estão cumprindo bem o papel deles!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!