Viele if else-Anweisungen in einen saubereren Ansatz umwandeln
Meinen code hier erkennt, ob die mimeType
ist gleich um einige MIME geben, wenn es ist, es wird eine gewisse Umstellung
public void convertToMp3(File src, File target,String mimeType){
if(mimeType.equals("audio/mpeg")){
...
}else if(mimeType.equals("audio/wav")){
mp3ToWav();
}else if(mimeType.equals("audio/ogg")){
...
}else if(...){
... //More if and else here
}
Habe ich verkürzt mein code, weil es eine Menge von else if Aussagen, Was design pattern ist geeignet zum entfernen von vielen wenn und sonst oder else if Aussagen?
InformationsquelleAutor der Frage user962206 | 2013-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben, könnten Sie einen
Converter
- Schnittstelle. Dann könnte man eine Klasse erstellen, die für jeden MIME-Typ, wie:Bräuchte man eine Klasse wie diese für jeden Konverter. Dann könnte man die Einrichtung eine Karte wie diese:
Dann Ihre
convertToMp3
Methode, so wird:Mit diesem Ansatz könnte man leicht hinzufügen, verschiedene Konverter in die Zukunft.
Alle ungetestet, wahrscheinlich nicht kompilieren, aber Sie bekommen die Idee
InformationsquelleAutor der Antwort cowls
Wenn Sie pre-JDK7, Sie können hinzufügen, ein enum für alle MIME Typen:
Und haben einen Blick auf den Stack Overflow Frage Java - Konvertieren von String zu enumwie konvertieren von Strings, enums.
InformationsquelleAutor der Antwort pgras
Empfiehlt sich die Verwendung des Strategy design pattern und ein
Map
zu versenden, um die geeignete Strategie. Besonders nützlich, wenn Sie zusätzliche Funktionen benötigen, zusätzlich zu einer Umwandlung für einen bestimmtenmimeType
oder die Wandler sind große und komplizierte code-und würden Sie wollen, um jede arbeitet in seinem eigenen.java
Datei.InformationsquelleAutor der Antwort Raedwald
Wenn Sie die gleichen Methoden für jeden Fall sollten Sie überprüfen, State-Muster
InformationsquelleAutor der Antwort Marcin Szymczak
Wenn Sie
JDK 7
verwenden, können Sieswitch-case
konstruieren:Finden Sie unter: Warum kann ich nicht Umschalten auf einen String?
Vorherige Versionen
if-else
ist die einzige Wahl.InformationsquelleAutor der Antwort Azodious
Es ist definitiv eine Strategie-Entwurfsmuster. Aber Sie haben ein großes problem in Ihrem Allgemeinen design. Es ist nicht eine gute Programmierung Gewohnheit, die Verwendung von String zum identifizieren eines Typs. Ganz einfach, weil es leicht bearbeitbar und Sie können einen Grammatik Fehler und verbringen den ganzen Nachmittag auf der Suche für ein Programmier-Fehler. Sie können vermeiden Sie die Verwendung von map<>.
Ich Folgendes vorschlagen:
Dieses design ist skalierbar, und Sie können hinzufügen, so viel wie Sie brauchen, Dateityp und-Wandler.
Die Antwort Ihr wählt ist irreführend!!!!
Es gibt einen großen Unterschied zwischen Programmieren und hacken.
InformationsquelleAutor der Antwort george
Wenn Sie sich nicht mit Java 7 könnten Sie eine
enum
und verwenden Sie diesen Wert mit einemswitch
Fall. Sie müssen dann nur übergeben Sie den enum-Wert (statt einer Datei, ich weiß nicht, warum Sie das tun). Es sähe ordentlicher zu.Diese sollten mit dem, was Sie tun möchten:
InformationsquelleAutor der Antwort Skepi