Blz!
Pois é, o codigo ficaria tipo assim:
String os = System.getProperty("os.name");
if (os.equals("windows")) {
prompt.executar(tempo, new Windows());
} else if (os.equals("linux")) {
prompt.executar(tempo, new Linux());
} else {
prompt.executar(tempo, new MacOS());
}
E para evitar esses if/else voce pode aplicar o pattern strategy utilizando um enum
:
public enum SistemasOperacionais {
WINDOWS("Windows"),
LINUX("Linux"),
MAC_OS("Mac OS");
private final String nome;
private SistemasOperacionais(String nome) {
this.nome = nome;
}
public static SistemaOperacional comNome(String nome) {
return Arrays.stream(SistemasOperacionais.values())
.filter(so -> so.nome.equals(nome))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("Nome do OS invalido!"));
}
}
String nomeOs = System.getProperty("os.name");
prompt.executar(tempo, SistemasOperacionais.comNome(nomeOs));
Obs: precisa colocar nas constantes do enum a String com o nome correto do SO devolvido pelo System.getProperty("os.name")