Decorator Pattern in Spring
public class BasicProductService implements ProductService {
private final ProductRepository productRepo;
public BasicProductService(ProductRepository productRepo) {
this.productRepo = productRepo;
}
@Override
public Product createProduct(String productName) {
// simplified implementation for brevity
Product product = new Product(productName);
productRepo.save(product);
return product;
}
}public class FullTextSearchIndexedDecorator implements ProductService {
private final ProductService wrappedProductService;
private final FullTextSearchIndexService fullTextSearchIndexService;
public FullTextSearchIndexedDecorator(
ProductService wrappedProductService,
FullTextSearchIndexService fullTextSearchIndexService) {
this.wrappedProductService = wrappedProductService;
this.fullTextSearchIndexService = fullTextSearchIndexService;
}
@Override
public Product createProduct(String productName) {
Product product = wrappedProductService.createProduct(productName);
fullTextSearchIndexService.index(product);
return product;
}
}Last updated