Instantly share code, notes, and snippets.

Embed
What would you like to do?
public enum FormatoLivro {
PDF,
EPUB;
}
public class GeradorEPUB implements GeradorLivro {
@Override
public void gera(Livro livro) {
//gera epub...
}
@Override
public FormatoLivro formato() {
return FormatoLivro.EPUB;
}
}
public interface GeradorLivro {
void gera(Livro livro);
FormatoLivro formato();
static GeradorLivro cria(FormatoLivro formato) {
Spliterator<GeradorLivro> spliterator = ServiceLoader.load(GeradorLivro.class).spliterator();
return StreamSupport.stream(spliterador, false)
.filter(g -> g.formato().equals(formato))
.findFirst()
.orElseThrow(() -> new RuntimeException("Não há gerador para o formato: " + formato));
}
}
public class GeradorPDF implements GeradorLivro {
@Override
public void gera(Livro livro) {
//gera pdf...
}
@Override
public FormatoLivro formato() {
return FormatoLivro.PDF;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment