---
title: "Objeto todopoderoso"
type: "antipattern"
slug: "god-object"
url: "http://localhost:3000/es/antipatterns/god-object.md"
---
# Objeto todopoderoso

En [programación orientada a objetos](https://es.wikipedia.org/wiki/Programación%5Forientada%5Fa%5Fobjetos "Programación orientada a objetos"), un   **objeto todopoderoso** (en [inglés](https://es.wikipedia.org/wiki/Idioma%5Finglés "Idioma inglés") _**God Object**_) es un objeto que _conoce demasiado_ o _hace demasiado_. El objeto todopoderoso es un ejemplo de un antipatrón.

## Historia

La idea básica detrás de la [Programación Estructurada](https://es.wikipedia.org/wiki/Programación%5FEstructurada "Programación Estructurada") es: un gran problema se divide en muchos pequeños problemas ([estrategia Divide y Vencerás](https://es.wikipedia.org/wiki/Algoritmo%5Fdivide%5Fy%5Fvencerás "Algoritmo divide y vencerás")) y las soluciones son creadas para cada uno de ellos. Una vez que los pequeños problemas han sido resueltos, el gran problema ha sido resuelto como un todo. Sin embargo hay un solo objeto el cual necesita saber todo: _el objeto en sí_. De esta manera, hay un solo grupo de problemas que el objeto debe resolver: _sus propios problemas_.

El Código del Objeto todopoderoso no sigue esta regla. En su lugar, la funcionalidad entera del programa está codificada en un solo objeto que hace todo, el cual mantiene toda la información del programa entero y contiene todos los métodos y subrutinas para manipular los datos. Como el objeto contiene muchos datos y requiere muchos métodos, su rol en el programa se convierte en Objeto Todopoderoso (Abarca todo). En lugar de objetos comunicándose entre ellos directamente, los objetos en el programa se cuelgan del Objeto Todopoderoso para manejar su información e interacción. Como el Objeto Todopoderoso es referenciado por casi todo el código, el mantenimiento se vuelve mucho más difícil, que el diseño del código de un programa mejor dividido

El objeto todopoderoso es el fallo de usar subrutinas de lenguajes procedurales en orientación a objetos o de usar demasiadas variables globales para almacenar información de estados

Crear un Objeto todopoderoso es típicamente considerado una mala práctica de programación, esta técnica es usada ocasionalmente para entornos de programación ajustados, donde el aumento de rendimiento ligero y la centralización es más importante que el mantenimiento y la elegancia de programación.

## Bibliografía

* Riel, Arthur J. (1996). [«Chapter 3: Topologies of Action-Oriented Vs. Object-Oriented Applications»](https://archive.org/details/objectorientedde0000riel). _Object-Oriented Design Heuristics_. Boston, MA: Addison-Wesley. [ISBN](https://es.wikipedia.org/wiki/ISBN "ISBN") [020163385X](https://es.wikipedia.org/wiki/Especial:FuentesDeLibros/020163385X "Especial:FuentesDeLibros/020163385X"). «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.»

## Enlaces externos

* [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)

*  Datos: [Q1533624](https://www.wikidata.org/wiki/Q1533624 "wikidata:Q1533624")
