---
title: "God object"
type: "antipattern"
slug: "god-object"
url: "http://localhost:3000/fr/antipatterns/god-object.md"
description: "Un God object est, dans le domaine de la programmation orientée objet, un objet qui reconnaît trop de choses ou fait trop de choses. Le god object est un exemple d'antipattern (ou anti-patron)."
---
# God object

> Un God object est, dans le domaine de la programmation orientée objet, un objet qui reconnaît trop de choses ou fait trop de choses. Le god object est un exemple d'antipattern (ou anti-patron).

Un **God object** est, dans le domaine de la [programmation orientée objet](https://en.wikipedia.org/wiki/Programmation%5Forient%C3%A9e%5Fobjet "Programmation orientée objet"), un [objet](https://en.wikipedia.org/wiki/Objet%5F%28informatique%29 "Objet (informatique)") qui reconnaît trop de choses ou fait trop de choses. Le _god object_ est un exemple d'[antipattern](https://en.wikipedia.org/wiki/Antipattern "Antipattern") (ou anti-patron).

## Description

Le principe général de la [programmation structurée](https://en.wikipedia.org/wiki/Programmation%5Fstructur%C3%A9e "Programmation structurée") est de s'attaquer à un problème important en le divisant en plus petits problèmes à résoudre (stratégie de [diviser pour régner](https://en.wikipedia.org/wiki/Diviser%5Fpour%5Fr%C3%A9gner%5F%28informatique%29 "Diviser pour régner (informatique)")). Une fois chacun des petits problèmes résolus, le problème général est automatiquement réglé. Ainsi, il n'y a qu'un objet auquel il doit être connu ou renseigné : lui-même. De la même façon, il n'y a qu'un seul ensemble de problèmes auquel un objet doit se confronter : l'ensemble des siens propres.

La programmation « _god object_ » ne suit pas cette approche. Au lieu de cela, la plus grande partie du programme consiste en un seul bloc qui est renseigné sur tout et maintient constamment à jour données ou informations sur le programme, et fournit la plupart des [fonctions](https://en.wikipedia.org/wiki/Fonction%5Finformatique "Fonction informatique") et des algorithmes qui utilisent ces données. Du fait que cet objet supporte et organise tellement d'informations à lui seul, il joue un rôle identique à celui d'un dieu. Au lieu de blocs de programme communicant indépendamment entre eux et sans intermédiaire, les autres parties du programme sont dépendants du _god object_ pour communiquer et prendre leurs informations. Comme le _god object_ est référencé par tout le reste de la programmation, la maintenance de celle-ci devient très difficile, y compris dans les plus ordonnés des programmes.

Un _god object_ est la version « orientée-objet » de l'incapacité à concevoir correctement les sous-programmes dans un langage de programmation procédural, ou d'utiliser trop de [variables globales](https://en.wikipedia.org/wiki/Variable%5Fglobale "Variable globale") pour y stocker des informations sur l'état du programme à un moment donné (comme les drapeaux).

Bien que la création d'un _god object_ soit considérée comme une mauvaise pratique de programmation, cette technique est à l'occasion utilisée dans les environnements critiques de programmation (comme les [microcontrôleurs](https://en.wikipedia.org/wiki/Microcontr%C3%B4leur "Microcontrôleur")), où le gain dans la vitesse d'exécution et la centralisation du contrôle sont des facteurs plus importants que la facilité de maintenance et l'élégance de la programmation.

## Notes et références

* (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « [God object](https://en.wikipedia.org/wiki/God%5Fobject?oldid=361403957) » ([voir la liste des auteurs](https://en.wikipedia.org/wiki/God%5Fobject?action=history)).

## Voir aussi

### Bibliographie

* (en) Arthur J. Riel, Object-Oriented Design Heuristics, Boston, MA, Addison-Wesley, 1996, 8e éd., 379 p., relié ([ISBN](https://en.wikipedia.org/wiki/International%5FStandard%5FBook%5FNumber "International Standard Book Number") [978-0-201-63385-6](https://en.wikipedia.org/wiki/Sp%C3%A9cial:Ouvrages%5Fde%5Fr%C3%A9f%C3%A9rence/978-0-201-63385-6 "Spécial:Ouvrages de référence/978-0-201-63385-6"), [LCCN](https://en.wikipedia.org/wiki/Num%C3%A9ro%5Fde%5Fcontr%C3%B4le%5Fde%5Fla%5FBiblioth%C3%A8que%5Fdu%5FCongr%C3%A8s "Numéro de contrôle de la Bibliothèque du Congrès") [95048396](https://lccn.loc.gov/95048396)), « Chapter 3: Topologies of Action-Oriented Vs. Object-Oriented Applications »

« 3.2: Do not create god classes/objects in your system. Be very suspicious of an abstraction whose name contains Driver, Manager, System, or Subsystem. »

### Liens externes

* (en) « [Anti-Patterns and Worst Practices – Monster Objects](http://www.lostechies.com/blogs/chrismissal/archive/2009/05/28/anti-patterns-and-worst-practices-monster-objects.aspx) »

*  [Portail de la programmation informatique](https://en.wikipedia.org/wiki/Portail:Programmation%5Finformatique "Portail:Programmation informatique")
