title image


Smiley Re: Entwurfmuster einsetzen
Hm, der Abschnitt public boolean send(String message){boolean h = false;String ss = null;if(message.equals(ss)){h = true;}return h;}ist m.E. sinnfrei. Es reduziert sich letztlich auf (schöner formatiert): public boolean send(String message) { return (message == null); }Sinnvoller wäre in Anbetracht des Namens der Methode z.B.: /** * Schreibt eine Nachricht in die Konsole, wenn sie existiert. * * @param message zu schreibende Nachricht * @return true wenn das Argument nicht null oder leer ist, sonst false */ public boolean send(String message) { if (message == null || message.length() == 0) { return false; // Nichts zu schreiben, daher false } // Nun der eigentliche Send-Befehl System.out.println(message); return true; // In Konsole schreiben, sollte immer klappen, daher hier true }Hier siehst Du auch ein Beispiel für die Behandlung der null-Problematik in der JavaDoc! Und im Abschnitt public static final Test NUL = new Test() { public boolean send(String message) { //mache garnichts .... return false; } };erzeugst Du tatsächlich eine anonyme Unterklasse von Test und überschreibst dort die Methode send() so, daß sie nie etwas macht und daher stets false zurückgibt.Anwendungszweck der Klasse Test: Loggen von Nachrichten. In bestimmten Situationen möchtest Du vielleicht das Loggen unterdrücken und lieferst den Anwendungsklassen nicht etwa eine Instanz mit new Test(), sondern Test.NUL. Die benutzende Anwendungsklasse merkt davon nichts und ruft ohne Prüfung unverdrossen die Methode send() auf, OHNE daß deswegen eine NullPointerException fliegt. Test.NUL dient hier also als null-Ersatzobjekt (Pseudo-Logging-Objekt). Beispiel (grob):public class MacheEtwasAufregendes { public static void main(String... args) { Test test = Test.NUL; // Initialisierung mit Pseudo-Objekt /* * Wenn via Kommandozeilen-Parameter beim Starten Logging erwünscht war, * dann Logging-Variable neu setzen. */ if (args.length > 0 && args[0].equals("logging")) { test = new Test(); } JFrame frame = new JFrame("Meine tolle Anwendung"); frame.getContentPane().add(new JLabel("Fensterinhalt")); frame.setVisible(true); test.send("Neues Fenster geöffnet."); Thread.sleep(1000); frame.dispose(); test.send("Fenster wurde geschlossen."); // usw., usw.... }}Alles klar? (Beispiel-Code ohne Compiler-Garantie geschrieben, nur zur Demonstration)



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: