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.
![1486194040359839.jpg null_pattern_uml_diagram.jpg](http://img.php.cn/upload/image/122/878/201/1486194040359839.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