modèle d'objet vide


Dans le modèle d'objet nul, un objet nul remplace la vérification des instances d'objet NULL. Au lieu de rechercher des valeurs nulles, l'objet Null reflète une relation qui ne fait rien. De tels objets Null peuvent également fournir un comportement par défaut lorsque les données ne sont pas disponibles.

Dans le modèle d'objet vide, nous créons une classe abstraite qui spécifie diverses opérations à effectuer et une classe d'entité qui étend la classe. Nous créons également une classe d'objet vide qui n'implémente aucune implémentation de la classe. La classe d'objets sera utilisée de manière transparente partout où la vérification des valeurs nulles est requise.

Implémentation

Nous allons créer une classe abstraite AbstractCustomer qui définit une opération (dans ce cas, le nom du client), et étendre le AbstractCustomer classe classe d'entité. La classe d'usine CustomerFactory renvoie un objet RealCustomer ou NullCustomer en fonction du nom transmis par le client.

NullPatternDemo, notre classe de démonstration utilise CustomerFactory pour démontrer l'utilisation du modèle d'objet nul.

null_pattern_uml_diagram.jpg

Étape 1

Créez une classe abstraite.

AbstractCustomer.java

public abstract class AbstractCustomer {
   protected String name;
   public abstract boolean isNil();
   public abstract String getName();
}

Étape 2

Créez une classe d'entité qui étend la classe ci-dessus.

RealCustomer.java

public class RealCustomer extends AbstractCustomer {

   public RealCustomer(String name) {
      this.name = name;		
   }
   
   @Override
   public String getName() {
      return name;
   }
   
   @Override
   public boolean isNil() {
      return false;
   }
}

NullCustomer.java

public class NullCustomer extends AbstractCustomer {

   @Override
   public String getName() {
      return "Not Available in Customer Database";
   }

   @Override
   public boolean isNil() {
      return true;
   }
}

Étape 3

Créer Classe CustomerFactory.

CustomerFactory.java

public class CustomerFactory {
	
   public static final String[] names = {"Rob", "Joe", "Julie"};

   public static AbstractCustomer getCustomer(String name){
      for (int i = 0; i < names.length; i++) {
         if (names[i].equalsIgnoreCase(name)){
            return new RealCustomer(name);
         }
      }
      return new NullCustomer();
   }
}

Étape 4

Utilisez CustomerFactory pour obtenir en fonction du nom transmis par le objet client RealCustomer ou NullCustomer.

NullPatternDemo.java

public class NullPatternDemo {
   public static void main(String[] args) {

      AbstractCustomer customer1 = CustomerFactory.getCustomer("Rob");
      AbstractCustomer customer2 = CustomerFactory.getCustomer("Bob");
      AbstractCustomer customer3 = CustomerFactory.getCustomer("Julie");
      AbstractCustomer customer4 = CustomerFactory.getCustomer("Laura");

      System.out.println("Customers");
      System.out.println(customer1.getName());
      System.out.println(customer2.getName());
      System.out.println(customer3.getName());
      System.out.println(customer4.getName());
   }
}

Étape 5

Vérifiez la sortie.

Customers
Rob
Not Available in Customer Database
Julie
Not Available in Customer Database