Skip to content

Instantly share code, notes, and snippets.

@alexandreaquiles
Created July 5, 2018 16:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexandreaquiles/07994eb3f979e308ba1ed1298d72ccf7 to your computer and use it in GitHub Desktop.
Save alexandreaquiles/07994eb3f979e308ba1ed1298d72ccf7 to your computer and use it in GitHub Desktop.
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