No lugar de criar um construtor em cada service recebendo a minha classe ClientHttpConfiguration eu n poderia so colocar static nos metodos dispararRequisicao e usá-los diretamente nas classes service?
No lugar de criar um construtor em cada service recebendo a minha classe ClientHttpConfiguration eu n poderia so colocar static nos metodos dispararRequisicao e usá-los diretamente nas classes service?
Olá Guilherme! Tudo bem?
Vamos analisar isso juntos.
Usando Métodos static
Você pode, sim, transformar os métodos dispararRequisicaoGet
e dispararRequisicaoPost
em métodos static
. Isso permitiria chamá-los diretamente sem precisar instanciar a classe ClientHttpConfiguration
. Veja um exemplo de como ficaria:
public class ClientHttpConfiguration {
public static HttpResponse<String> dispararRequisicaoGet(String uri) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
return client.send(request, HttpResponse.BodyHandlers.ofString());
}
public static HttpResponse<String> dispararRequisicaoPost(String uri, JsonObject json) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(json.toString()))
.build();
return client.send(request, HttpResponse.BodyHandlers.ofString());
}
}
Chamando os Métodos static
nas Classes Service
Com os métodos static
, você pode chamá-los diretamente nas suas classes service
sem precisar de uma instância de ClientHttpConfiguration
. Veja um exemplo de como ficaria na classe AbrigoService
:
public class AbrigoService {
public void listarAbrigo() throws IOException, InterruptedException {
String uri = "http://localhost:8080/abrigos";
HttpResponse<String> response = ClientHttpConfiguration.dispararRequisicaoGet(uri);
// Processar a resposta...
}
public void cadastrarAbrigo(JsonObject json) throws IOException, InterruptedException {
String uri = "http://localhost:8080/abrigos";
HttpResponse<String> response = ClientHttpConfiguration.dispararRequisicaoPost(uri, json);
// Processar a resposta...
}
}
Usar métodos static
pode ser uma solução rápida e prática, mas é importante considerar alguns pontos:
static
podem ser mais difíceis de testar, especialmente se você precisar usar mocks.static
podem violar princípios de design orientado a objetos, como o princípio da responsabilidade única (SRP) e o princípio de inversão de dependência (DIP).Espero ter ajudado e bons estudos!