Patrons de conception/Cas spécial


Ce patron d'entreprise est similaire au patron Objet nul.

Patron de conception
Catégorie : EntreprisePatrons de base
Nom français : Cas spécial
Nom anglais : Special case
Une sous-classe avec un comportement spécial pour un cas particulier

En programmation orientée objet, les références nulles ne sont pas conformes aux principes du polymorphisme. Ceux-ci permettent d'utiliser une référence à une classe sans se préoccuper de quelle sous-classe particulière est l'objet. Avec un langage fortement typé, le compilateur peut vérifier que les appels sont corrects.

Tandis que le cas d'une référence nulle nécessite un traitement à part pour éviter une erreur à l'exécution. Ce genre de code doit être répété à travers toute l'application, forçant à faire de la copie de code fortement déconseillé en développement de logiciel. Ce genre de problème arrive également en mathématique avec l'infini qui a des règles spéciales pour les opérations brisant les invariants généraux sur les nombres.

Un autre problème avec les références nulles est de leur définir une gestion cohérente selon ce que la valeur nulle représente. Par exemple, la signification d'une référence nulle pour un objet personne représentant le conducteur habituel d'un véhicule peut représenter une absence de conducteur, ou bien un groupe de personnes référencé par un autre attribut.

Au lieu d'utiliser une référence nulle, il est préférable de définir un cas spécial (une sous-classe ou une implémentation d'interface spécifique) ayant la même interface et permettant de traiter ce cas spécial.

Pour l'exemple du conducteur habituel d'un véhicule, on pourra avoir les sous-classes SansConducteur et GroupeDeConducteur pour représenter et traiter ces cas particuliers.