Modèles de conception - Modèle d'objet nul

Dans le modèle d'objet nul, un objet nul remplace la vérification de l'instance d'objet NULL. Au lieu de mettre if check pour une valeur nulle, Null Object reflète une relation ne rien faire. Un tel objet Null peut également être utilisé pour fournir un comportement par défaut au cas où les données ne seraient pas disponibles.

Dans le modèle Null Object, nous créons une classe abstraite spécifiant diverses opérations à effectuer, des classes concrètes étendant cette classe et une classe d'objet nulle fournissant une implémentation ne rien faire de cette classe et sera utilisée sans problème là où nous devons vérifier la valeur nulle.

la mise en oeuvre

Nous allons créer une classe abstraite AbstractCustomer définissant les opearations. Ici le nom du client et les classes concrètes étendant la classe AbstractCustomer . Une classe d'usine CustomerFactory est créée pour renvoyer des objets RealCustomer ou NullCustomer en fonction du nom du client qui lui a été transmis.

NullPatternDemo , notre classe de démonstration, utilisera CustomerFactory pour démontrer l'utilisation du modèle Null Object.

É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 des classes concrètes étendant 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éez la 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 des objets RealCustomer ou NullCustomer en fonction du nom du client qui lui a été transmis.

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