Engenharia Estrutural Civil &
Usando o padrão de decoração para adicionar logging aos métodos de serviço existentes sem alterar seu código
Table of Contents
O padrão de decorador é um padrão de design poderoso na engenharia de software que permite aos desenvolvedores adicionar novas funcionalidades aos objetos existentes sem modificar seu código original. Esta abordagem é especialmente útil quando você precisa adicionar loging aos métodos de serviço sem alterar seu código fonte, garantindo bases de código limpas e mantendíveis.
Compreender o padrão de decoração
O padrão de decorador envolve criar uma classe de embrulho que implementa a mesma interface que o serviço original. Este representante de embrulho chama para o serviço original, mas adiciona comportamento adicional, como o registro, antes ou depois da execução do método.
Implementação de Registo com o Padrão Decorador
Suponha que você tenha uma interface de serviço:
public interface DataService {
void fetchData();
}
Você pode criar uma implementação concreta:
public class RealDataService implements DataService {
@Override
public void fetchData() {
// Fetch data from a database or external API
}
}
Em seguida, crie uma classe de decorador que adiciona loging:
public class LoggingDataServiceDecorator implements DataService {
private final DataService wrappedService;
public LoggingDataServiceDecorator(DataService service) {
this.wrappedService = service;
}
@Override
public void fetchData() {
System.out.println("Fetching data started.");
wrappedService.fetchData();
System.out.println("Fetching data completed.");
}
}
Usar o Decorador
Para adicionar o registro, instance o decorador com o seu serviço existente:
DataService service = new RealDataService();
DataService loggedService = new LoggingDataServiceDecorator(service);
// Now, calling fetchData will include logging
loggedService.fetchData();
Benefícios do padrão de decoração
- Melhora a funcionalidade existente sem modificar o código original
- Promove a reutilização e separação de preocupações de código
- Facilita a adição de múltiplas camadas de comportamento dinamicamente
O uso do padrão de decorador para registro é uma solução elegante que mantém o código limpo e adere ao princípio aberto, facilitando a extensão e manutenção de suas aplicações.