On dit souvent que 80% du temps passé à lire le code source en touchant un programme pendant la maintenance et le développement. Par conséquent, vous devez toujours être conscient du code source hautement lisible et maintenable, mais lorsqu'il s'agit de systèmes d'entreprise, il existe inévitablement de nombreuses branches conditionnelles en fonction du type de contrat, du type de partenaire commercial, etc. J'ai l'impression que ça a tendance à l'être. Donc, j'ai appris qu'il existe une méthode utilisant Enum comme l'une des méthodes pour réduire les instructions if, donc je la posterai pour ne pas l'oublier.
S'il existe de nombreuses branches conditionnelles par l'instruction if, l'utilisation de Enum facilite la lecture.
SampleEnum.java
public enum SampleEnum {
kind1(new Kind1()),
kind2(new Kind2()),
kind3(new Kind3()),
kind4(new Kind4());
SuperKind kind;
private SampleEnum(SuperKind kind) {
this.kind = kind;
}
public void execute(Object obj) {
kind.execute(obj);
}
}
Tout d'abord, préparez Enum. Ensuite, pour chaque propriété, décrivez la classe de traitement que vous souhaitez exécuter et définissez le constructeur. Enfin, définissez la méthode d'exécution de la classe de traitement que vous souhaitez exécuter.
Enum lui-même est implémenté dans ces 3 étapes. Après cela, si un type est ajouté, ajoutez simplement une propriété et décrivez la classe de traitement que vous souhaitez exécuter pour chaque type.
Kind1.java
public class Kind1 implements SuperKind {
public void execute(Object obj){
if(!(obj instanceof String)) {
System.out.println("Veuillez spécifier une chaîne de caractères comme argument");
}
System.out.println("En classe Kind1" + obj);
}
}
La classe de traitement que vous souhaitez exécuter. Pour l'instant, sortons facilement une instruction sur la console qui nous indique qu'elle a été exécutée dans cette classe. SuperKind est une interface. Puisque le contenu ne définit ici que la méthode ʻexecute`, je vais l'omettre.
Main.java
public class Main {
public static void main(String[] args) {
SampleEnum test1 = SampleEnum.valueOf("kind1");
SampleEnum test2 = SampleEnum.valueOf("kind2");
SampleEnum test3 = SampleEnum.valueOf("kind3");
SampleEnum test4 = SampleEnum.valueOf("kind4");
String string = "Test d'énumération";
test1.execute(string);
test2.execute(string);
test3.execute(string);
test4.execute(string);
}
}
C'est la classe principale. Le résultat de l'exécution ici est le suivant.
Tester Enum dans la classe Kind1
Tester Enum dans la classe Kind2
Tester Enum dans la classe Kind3
Tester Enum dans la classe Kind4
En implémentant ce type d'implémentation, j'ai senti que la plage d'utilisation était large, par exemple en réduisant les jugements d'instruction if dans la classe Factory et en réduisant les jugements d'instruction if tels que le processus de logique métier à appeler.
Recommended Posts