[Java] Reduzieren Sie if-Anweisungen mit Enum

Einführung

Es wird oft gesagt, dass 80% der Zeit damit verbracht wurde, den Quellcode zu lesen, wenn ein Programm während der Wartung und Entwicklung berührt wurde. Daher sollten Sie sich immer des Quellcodes bewusst sein, der gut lesbar und wartbar ist. Wenn es jedoch um Geschäftssysteme geht, gibt es zwangsläufig viele bedingte Zweige, abhängig von der Art des Vertrags, der Art des Geschäftspartners usw. Ich fühle, dass es dazu neigt. Also habe ich gelernt, dass es eine Methode gibt, die Enum als eine der Methoden verwendet, um if-Anweisungen zu reduzieren. Deshalb werde ich sie veröffentlichen, um sie nicht zu vergessen.

Vorteile der Reduzierung von if-Anweisungen

Wenn die if-Anweisung viele bedingte Verzweigungen enthält, ist die Verwendung von Enum sehr einfach zu lesen.

Konkretes Beispiel

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);
	}
}

Bereiten Sie zuerst Enum vor. Beschreiben Sie als Nächstes für jede Eigenschaft die Verarbeitungsklasse, die Sie ausführen möchten, und definieren Sie den Konstruktor. Definieren Sie abschließend die Ausführungsmethode der Verarbeitungsklasse, die Sie ausführen möchten.

Enum selbst wird in diesen 3 Schritten implementiert. Wenn danach ein Typ hinzugefügt wird, fügen Sie einfach eine Eigenschaft hinzu und beschreiben Sie die Verarbeitungsklasse, die Sie für jeden Typ ausführen möchten.

Kind1.java


public class Kind1 implements SuperKind {

	public void execute(Object obj){

		if(!(obj instanceof String)) {
			System.out.println("Bitte geben Sie eine Zeichenfolge als Argument an");
		}
		System.out.println("In der Klasse Kind1" + obj);
	}
}

Die Verarbeitungsklasse, die Sie ausführen möchten. Lassen Sie uns zunächst einfach eine Anweisung an die Konsole ausgeben, die uns mitteilt, dass sie in dieser Klasse ausgeführt wurde. SuperKind ist eine Schnittstelle. Da der Inhalt hier nur die Methode "execute" definiert, werde ich sie weglassen.

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 = "Aufzählungstest";

		test1.execute(string);
		test2.execute(string);
		test3.execute(string);
		test4.execute(string);
	}
}

Dies ist die Hauptklasse. Das Ergebnis der Ausführung hier ist wie folgt.

Enum in der Klasse Kind1 testen
Enum in der Kind2-Klasse testen
Enum in der Kind3-Klasse testen
Enum in der Kind4-Klasse testen

Schließlich

Durch die Implementierung dieser Art der Implementierung hatte ich das Gefühl, dass der Anwendungsbereich breit ist, z. B. das Reduzieren von if-Anweisungsurteilen in der Factory-Klasse und das Reduzieren von if-Anweisungsurteilen, z. B. welcher Geschäftslogikprozess aufgerufen werden soll.

Recommended Posts

[Java] Reduzieren Sie if-Anweisungen mit Enum
Java if- und switch-Anweisungen
[Java] Verzweigungsaufzählung mit switch-Anweisung
[Java] enum (Aufzählungstyp)
Installieren Sie Java mit Homebrew
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Bequemer Download mit JAVA
Schalten Sie Java mit direnv
Enum Reverse Map Java
Implementieren Sie Singleton mit Enum schnell in Java
Ausgabe true mit if (a == 1 && a == 2 && a == 3) in Java (Invisible Identifier)
Java-Download mit Ansible
Lass uns mit Java kratzen! !!
Erstellen Sie Java mit Wercker
Endian-Konvertierung mit JAVA
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt
Erste Schritte mit Java Collection
Java-Konfiguration mit Spring MVC
Grundlegende Authentifizierung mit Java 11 HttpClient
Experimentieren wir mit der Java-Inline-Erweiterung
Führen Sie Batch mit Docker-Compose mit Java-Batch aus
[Vorlage] MySQL-Verbindung mit Java
Schreiben Sie Java Try-Catch mit Optional neu
Installieren Sie Java 7 mit Homebrew (Fass)
[Java] JSON-Kommunikation mit Jackson
Java zum Spielen mit Function
Liste mit java8StreamAPI :: reduzieren bearbeiten
Aktivieren Sie Java EE mit NetBeans 9
[Java] JavaConfig mit statischer innerer Klasse
Informationen zu Java-Variablendeklarationsanweisungen
Lassen Sie uns Excel mit Java betreiben! !!
Java-Versionsverwaltung mit SDKMAN
RSA-Verschlüsselung / Entschlüsselung mit Java 8
Paging PDF mit Java + PDFBox.jar
[Java] Inhaltserfassung mit HttpCliient
Java-Versionsverwaltung mit jenv
Fehlerbehebung mit Java Flight Recorder
Enum Strategiemuster in Java
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Fehler beim Spielen mit Java
Java Study Memo 2 mit Progate
Erste Schritte mit Java Basics
[Ruby] Problem mit der if-Anweisung
Reproduzieren Sie die Java-Enumeration in C #
Reduzieren Sie redundanten Code mit Lombok
Saisonale Anzeige mit Java-Schalter
Verwenden Sie SpatiaLite mit Java / JDBC
Lernen von Java mit Progate Note 1
Vergleichen Sie Java 8 Optional mit Swift
HTML-Analyse (Scraping) mit JAVA
Führen Sie Java VM mit Web Assembly aus
Java während und für Anweisungen
Bildschirmübergang mit Swing, Java
Java Unit Test mit Mockito