Wie man if-else elegant in Java schreibt
1. switch
Die Switch-Methode hat einen guten Einfluss auf die Verarbeitung von Aufzählungswerten. Für unterschiedliche Auftragsstatus müssen beispielsweise unterschiedliche Verarbeitungen durchgeführt werden, da die Statuswerte begrenzt sind. dann können wir switch direkt verwenden, um unterschiedliche Verarbeitungen für verschiedene Zustände durchzuführen:
Originalaussage
public void before(Integer status) { if(status == 1){ System.out.println("订单未接单"); }else if(status == 2){ System.out.println("订单未发货"); }else if(status == 3){ System.out.println("订单未签收"); }else{ System.out.println("订单已签收"); } }
switch
public void greater(Integer status) { switch (status){ case 1: System.out.println("订单未接单"); break; case 2: System.out.println("订单未发货"); break; case 3: System.out.println("订单未签收"); break; default: System.out.println("订单已签收"); } }
Zusammenfassung:
# 🎜🎜 Die #switch-Anweisung eignet sich für Szenarien, in denen die Beurteilungsbedingungen begrenzt sind, keine komplexen Berechnungen erforderlich sind und die Verarbeitungsanweisung einfach ist. Wenn unsere Beurteilungsbedingungen eine Reihe komplexer Berechnungen erfordern oder die Logik der Verarbeitungsanweisungen relativ komplex ist, müssen wir andere Verarbeitungsmethoden in Betracht ziehen. Schließlich ist das Schreiben vieler Verarbeitungsanweisungen in dem Fall nicht bequem. 🎜🎜#2. FunktionsschnittstelleWenn es um komplexere Verarbeitungslogiken geht, ziehen wir es vor, diese Verarbeitungslogiken separat zu trennen, anstatt sie in einer Methode zu verarbeiten, was die allgemeine Lesbarkeit und Entkopplung erhöht Dort haben wir auch das Muster abgeleitet, funktionale Schnittstellen zur Verarbeitung von „if else“ zu verwenden Verschiedene Methoden werden über einheitliche Beurteilungsbedingungen aufgerufen. Die spezifischen Beispiele lauten wie folgt:@Component
public class FunctionInterfaceStrategy {
/**
* key 方法参数,多个参数可以自定义一个实体类处理
* value 方法返回值
*/
private Map<Integer, Function<Object,Boolean>> operationMap;
@PostConstruct
private void init(){
operationMap = new HashMap<>();
operationMap.put(1,this::takeOrder);
operationMap.put(2,this::sendOrder);
operationMap.put(3,this::signOrder);
operationMap.put(4,this::finishOrder);
}
public Boolean doOperation(Object params,Integer status){
return operationMap.get(status) == null || operationMap.get(status).apply(params);
}
private Boolean takeOrder(Object params){
// TODO 比较复杂的处理逻辑
System.out.println("订单未接单");
return true;
}
private Boolean sendOrder(Object params){
// TODO 比较复杂的处理逻辑
System.out.println("订单未发货");
return true;
}
private Boolean signOrder(Object params){
// TODO 比较复杂的处理逻辑
System.out.println("订单未签收");
return true;
}
private Boolean finishOrder(Object params){
// TODO 比较复杂的处理逻辑
System.out.println("订单已签收");
return true;
}
}
Nach dem Login kopieren
Beim Aufruf ist es nicht erforderlich, „if else“ zur Unterscheidung zu verwenden. Rufen Sie die Parameter direkt in die Funktionszuordnung auf. 🎜🎜#@Component public class FunctionInterfaceStrategy { /** * key 方法参数,多个参数可以自定义一个实体类处理 * value 方法返回值 */ private Map<Integer, Function<Object,Boolean>> operationMap; @PostConstruct private void init(){ operationMap = new HashMap<>(); operationMap.put(1,this::takeOrder); operationMap.put(2,this::sendOrder); operationMap.put(3,this::signOrder); operationMap.put(4,this::finishOrder); } public Boolean doOperation(Object params,Integer status){ return operationMap.get(status) == null || operationMap.get(status).apply(params); } private Boolean takeOrder(Object params){ // TODO 比较复杂的处理逻辑 System.out.println("订单未接单"); return true; } private Boolean sendOrder(Object params){ // TODO 比较复杂的处理逻辑 System.out.println("订单未发货"); return true; } private Boolean signOrder(Object params){ // TODO 比较复杂的处理逻辑 System.out.println("订单未签收"); return true; } private Boolean finishOrder(Object params){ // TODO 比较复杂的处理逻辑 System.out.println("订单已签收"); return true; } }
@Autowired private FunctionInterfaceStrategy functionInterfaceStrategy; functionInterfaceStrategy.doOperation("参数",1);
Was wir oben gezeigt haben, ist natürlich eine funktionale Schnittstelle mit Parametern und Rückgabewerten. In der tatsächlichen Produktion benötigen wir möglicherweise auch andere Formen von funktionalen Schnittstellen, die wir separat auflisten Referenz
SchnittstellennameBeschreibungSupplier | Keine Parameter, Rückgabewert | get |
---|---|---|
# 🎜🎜#Consumer#🎜 🎜# | Mit Parametern, kein Rückgabewertaccept | |
#🎜 🎜#Keine Parameter, nein Rückgabewert | run | |
Bei Parametern gibt es einen Rückgabewert#🎜 🎜##🎜 🎜#apply | 3. Strategiemuster | |
Die Form des Strategiemusters eignet sich für Situationen, in denen die Implementierungsmethode komplexer ist, und für sauberere Szenarien, in denen die Verarbeitungslogik entkoppelt werden muss | # 🎜🎜#1. Wir müssen eine Schnittstellenklasse erstellen, um das Format unserer nachfolgenden Implementierungsklassen anzugeben Strategie-Factory-Klasse zum Hosten der Implementierungsklasse | 4. Methodenaufruf |
Welches letztendlich zu verwenden ist, hängt von der spezifischen Geschäftssituation ab.
4. Schutzanweisung
Wir müssen häufig verschiedene Parameterverschachtelungen vor der Beurteilungslogik verarbeiten , wenn die Bedingungen nicht erfüllt sind, wird es direkt zurückgegeben. In diesem Fall wird eher empfohlen, die Guard-Anweisung zu verwenden, um
Original-Anweisung
@Component @AllArgsConstructor public class OrderStrategyFactory { private final List<OrderStrategy> orderStrategyList; private static Map<Integer,OrderStrategy> strategyMap = new HashMap<>(); @PostConstruct private void init(){ for (OrderStrategy orderStrategy : orderStrategyList) { strategyMap.put(orderStrategy.getType(),orderStrategy); } } /** * 执行方法 * @param status * @param params * @return */ public Boolean handler(Integer status,Object params){ return strategyMap.get(status).handler(params); } }
Guard-Anweisung zu verwenden
@RestController @RequestMapping("ifelse") @AllArgsConstructor public class IfElseController { private final OrderStrategyFactory orderStrategyFactory; @GetMapping("strategy") public Boolean strategy(Integer status){ return orderStrategyFactory.handler(status,"1"); } }
Das obige ist der detaillierte Inhalt vonWie man if-else elegant in Java schreibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist
