Skip to main content

¿Cuál es el principio de responsabilidad única?

En la programación y el diseño de computadoras, el principio de responsabilidad única es un concepto que defiende la opinión de que cualquier clase en un programa debe realizar solo una función en la aplicación más grande. Esta idea promueve en parte algunos de los ideales de la programación orientada a objetos, como la encapsulación, porque toda una clase se centrará en realizar una única responsabilidad y tendrá poca dependencia de las clases externas. Al mismo tiempo, es algo antitético a algunos de los conceptos de la programación orientada a objetos temprana, porque la función de un solo objeto se desacopla de los datos que maneja el objeto, lo que significa que muchos objetos en combinación podrían necesitar ser construidos para mantener Algunos datos centrales. El principio de responsabilidad única es la base de un tipo de modelo de diseño conocido como diseño basado en la responsabilidad.

Un ejemplo del principio de responsabilidad única podría tomar la forma de un teléfono tradicional. Algunos principios de diseño verían el teléfono como un solo objeto que maneja tanto la entrada desde la línea telefónica como la transmisión de salida desde el altavoz. Bajo un modelo de responsabilidad única, en el que un solo objeto debería tener una sola responsabilidad, el teléfono consistiría en varios objetos separados, cada uno de los cuales desempeñaría una sola función, como recibir solo la entrada de la línea telefónica o solo enviar los datos a través de El auricular.

Una de las ventajas que hace posible el uso del principio de responsabilidad única es un nivel muy alto de abstracción y modularidad. En el ejemplo del teléfono, la entrada de la línea telefónica o la forma en que la señal se envía al usuario se puede cambiar sin afectar a las clases vecinas, siempre y cuando se adhieran al mismo contrato para la interfaz. Además, la reutilización de ciertos componentes puede ser muy alta, porque cada clase está completamente encapsulada y depende muy poco, si es que lo hace, de los objetos circundantes, centrándose en su única responsabilidad.

Una complicación que podría crear el principio de responsabilidad única es una gran cantidad de clases y objetos que operan con los mismos datos. Esto puede significar una gran cantidad de gastos generales y un proceso de diseño complicado. También puede dificultar la depuración de un programa grande, porque una sola porción del programa podría consistir en miles de archivos de clase pequeños.

Cuando el principio de responsabilidad única se aplica a través de un diseño basado en la responsabilidad, los datos y los métodos utilizados para manipular los datos se separan para fines de diseño. Si bien esto conduce a una cierta libertad, encapsulación y modularidad en el diseño, también puede generar una serie de patrones y diseños intermedios que deben usarse para facilitar una serie de clases que intentan interactuar con los datos a la vez. Por otro lado, si los datos de un objeto y los métodos utilizados para manipularlos están unidos en un solo objeto de responsabilidad múltiple, entonces el código puede volverse más difícil de modificar a medida que los sistemas escalan, cambian o se vuelven más complejos.