Aller au contenu

Patrons de conception/Objet nul

Un livre de Wikilivres.
Patron de conception
Catégorie : Autre
Nom français : Objet nul
Nom anglais : Null object
Utiliser un objet nul dont les méthodes ne font rien au lieu d'utiliser une référence nulle.


Quand une fonction ou une méthode retourne une référence à un objet, celle-ci peut être nulle (aucun objet concret référencé). il faut alors tester la référence retournée afin de ne pas provoquer une erreur dans le programme.

Au lieu de retourner une référence nulle, il est possible de créer une sous-classe ou une classe d'implémentation d'interface spécifique dont les méthodes ne font rien. La fonction ou méthode retourne alors une instance de cette classe.

Les appels de méthodes avec un objet nul sont alors possibles, ce qui n'est pas le cas avec une référence nulle.

Comme l'état interne de cet objet ne change pas (les méthodes ne faisant rien), il est possible d'avoir une instance unique d'un tel objet (voir singleton).

Exemple en Java

[modifier | modifier le wikicode]
public interface ILivre
{
	public void lire();
}

public class Lecteur
{
	/** Objet nul : une sous-classe implémentant l'interface ILivre */
	public static final ILivre AUCUN_LIVRE = new ILivre()
	{
		public void lire() { /* Ne rien faire */ }
	};

	/** Jamais null : l'objet nul AUCUN_LIVRE est utilisé à la place de null. */
	private ILivre livre_en_cours = AUCUN_LIVRE;

	public void setLivre(ILivre livre)
	{
		livre_en_cours = livre==null ? AUCUN_LIVRE : livre;
	}

	public void action()
	{
		/* Pas besoin de tester null */
		livre_en_cours.lire();
	}
}
  • Singleton pour une instance unique de l'objet nul.