Lors de la création d'un objet, je pense que le code peut être actualisé si vous utilisez enum au lieu du branchement conditionnel à l'aide de l'instruction if ou de l'instruction switch.
Ce qui suit est un exemple d'implémentation d'Enum qui retourne l'animal correspondant quand un aboiement est entré.
AnimalCreator.java
public enum AnimalCreator {
CAT("nyaa", Cat::new),
DOG("waon", Dog::new),
BIRD("pii", Bird::new);
private String nakigoe;
private Supplier<Animal> create;
AnimalCreator(String nakigoe, Supplier<Animal> creator) {
this.nakigoe = nakigoe;
this.create = creator;
}
//Carte qui renverse l'animal de l'écorce
private static final Map<String, AnimalCreator> map =
Stream.of(AnimalCreator.values())
.collect(Collectors.toMap(a -> a.nakigoe, a -> a));
//factory method
public static Animal of(String nakigoe) {
return Optional.ofNullable(map.get(nakigoe))
.map(a -> a.create.get())
.orElseThrow(IllegalArgumentException::new);
}
}
L'appelant ressemble à ceci. Le code est plus propre car il n'y a pas de branches conditionnelles.
main.java
Animal cat = AnimalCreator.of("nyaa");
Animal dog = AnimalCreator.of("waon");
Animal bird = AnimalCreator.of("pii");
Animal mouse = AnimalCreator.of("chu");
// java.lang.IllegalArgumentException se produit
Recommended Posts