leandromoraesrj / sincad-backend

PROJETO BASE DE EXEMPLO USANDO AS MELHORES PRATICAS DE DESENVOLVIMENTO
0 stars 0 forks source link

Padrão Template #40

Open leandromoraesrj opened 2 years ago

leandromoraesrj commented 2 years ago

O Template Method é um padrão de projeto comportamental que permite definir o esqueleto de um algoritmo em uma classe base e permitir que as subclasses substituam as etapas sem alterar a estrutura geral do algoritmo.

leandromoraesrj commented 2 years ago
public interface ReadOnlyService<T, ID> {
    ReadOnlyRepository<T, ID> getRepositoryReadOnly();

    default Sort getSort() {
        return Sort.unsorted();
    }

    default List<T> buscar() {
        return getRepositoryReadOnly().findAll(getSort());
    }
}
@Service
public class UfServiceImpl extends ReadOnlyServiceImpl<Uf, String> implements UfService {
    @Autowired
    private UfRepository repository;

    @Override
    public Sort getSort() {
        String[] fieldsOrder = { "nome" };
        return Sort.by(Sort.Direction.ASC, fieldsOrder);
    }

    @Override
    public ReadOnlyRepository<Uf, String> getRepositoryReadOnly() {
        return repository;
    }
}