Muster: Java: NullPattern



Null Muster Bearbeiten

Implementiere einen leeren Algorithmus.

Implementierung (1) Bearbeiten

 package de.bastie.eHunter.gui.action; <br>
 import java.awt.event.ActionEvent; 
 import javax.swing.Icon;<br>
 
 /**
  * Null Pattern Implementation
  * @author Bastie - Sebastian Ritter
  * @licence FDL für Wikibooks
  * @version 1.0
  */
 class DefaultMenuAction extends ModelDrivenAbstractAction {
  
   public DefaultMenuAction (final String text) {
     this (text, null);
   }
  
   public DefaultMenuAction (final String text, 
                              final Icon icon) {
     super (text, icon);
   }

// Hier ist die null action.
   public void actionPerformed (final ActionEvent ignore) {
   }
 }


 package de.bastie.eHunter.gui.action;<br>
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.Icon;<br>
 
 /**
  * Diese Klasse dient dazu für alle anderen Action Objekte
  * vordefinierte Methoden zur Verfügung zu stellen. Insbesondere
  * sollen diese Zugriff auf das zugrundeliegende BO haben.
  *
  * Die <code><strong>~</strong></code> wird hierbei als Descriptor für
  * den Mnemonic Key verwendet.
  * @author Bastie - Sebastian Ritter
  * @licence FDL für Wikibooks
  * @version 1.0
  */
 abstract class ModelDrivenAbstractAction extends AbstractAction {
 
   public ModelDrivenAbstractAction (final String text) {
     this (text, null);
   }
  
   public ModelDrivenAbstractAction (String menuText, 
                                     final Icon icon) {
     super (menuText, icon);
     final int mnemonicKeyDescriptor = menuText.indexOf('~'); 
     if (mnemonicKeyDescriptor != -1) {
       // Rausschneiden von ~
       menuText = menuText.substring(0,mnemonicKeyDescriptor)
                 .concat(menuText.substring(mnemonicKeyDescriptor+1));
       this.putValue(Action.MNEMONIC_KEY, new Integer (menuText.charAt(mnemonicKeyDescriptor)));
       this.putValue(Action.NAME, menuText);
     }
   }
 }

Erläuterungen Bearbeiten

Das vorstehende Beispiel zeigt Dir das NullPattern anhand einer einfachen Implementation für Swing Action Objekte für Menüs. Die eigentlich abstrakte Methode

public void actionPerformed (final ActionEvent e) {}

Anmerkung (1): Als kleines Bonbon habe ich noch die Basisklasse hinzugefügt, welche eine einfache Möglichkeit der Steuerung des Mnemonic-Zeichens anbietet.

Anmerkung (2): Die eigentliche Initialisierung erfolgt bei mir über einen Reflection Mechanismus zusammen mit einen Klassenfabrik, so dass beide Klassen entsprechend auf default Sichtbarkeit eingeschränkt sind.

Anmerkung (3): Ich habe nicht den kompletten Quelltext hier dargestellt, da er zu umfangreich ist.