Single Responsibility
El Principio de Responsabilidad 脷nica (SRP) es uno de los cinco principios SOLID de dise帽o orientado a objetos, introducido por Robert C. Martin. SRP defiende que una clase deber铆a tener solo una raz贸n para cambiar, lo que significa que deber铆a tener solo una responsabilidad o encapsular una 煤nica funcionalidad.
Principios clave del Principio de Responsabilidad 脷nica (SRP):
Una Responsabilidad:
- Una clase deber铆a encapsular una y solo una responsabilidad o funcionalidad.
- Este principio tiene como objetivo promover un dise帽o claro y conciso donde cada clase tiene un prop贸sito enfocado.
Raz贸n para Cambiar:
- La "raz贸n para cambiar" se refiere a la motivaci贸n detr谩s de modificar una clase.
- Si una clase tiene m煤ltiples responsabilidades y un aspecto del sistema cambia, puede requerir modificaciones en esa clase, afectando potencialmente otras responsabilidades no relacionadas.
Mantenibilidad Mejorada:
- Al adherirse a SRP, el c贸digo se vuelve m谩s mantenible ya que cada clase se enfoca en una tarea espec铆fica.
- Los cambios relacionados con una funcionalidad particular est谩n aislados en la clase responsable de esa funcionalidad, reduciendo la probabilidad de efectos secundarios no deseados.
Mejora de la Legibilidad y Comprensi贸n:
- El c贸digo es m谩s f谩cil de leer y entender cuando cada clase tiene un prop贸sito claro y singular.
- SRP anima a los desarrolladores a crear clases m谩s peque帽as y enfocadas, haciendo que la base de c贸digo sea m谩s comprensible.
Dise帽o Flexible:
- SRP facilita un dise帽o m谩s flexible y adaptable.
- Cuando un sistema evoluciona o los requisitos cambian, las clases que siguen SRP son menos propensas a ser afectadas por modificaciones, ya que sus responsabilidades est谩n bien definidas y aisladas.
Ejemplo:
Considera una clase que gestiona tanto la entrada/salida de archivos como la autenticaci贸n de usuarios. Aplicando SRP, estas responsabilidades deber铆an separarse en clases distintas. Una clase podr铆a manejar las operaciones de archivo, y otra podr铆a ser responsable de la autenticaci贸n de usuarios. Esta separaci贸n se adhiere al principio, asegurando que los cambios en un aspecto del sistema no afecten al otro.
# Sin SRP
class FileManagerAndAuthenticator:
def read_file(self, filename):
# Implementaci贸n de lectura de archivo
def write_file(self, filename, content):
# Implementaci贸n de escritura de archivo
def authenticate_user(self, username, password):
# Implementaci贸n de autenticaci贸n de usuario
# Con SRP
class FileManager:
def read_file(self, filename):
# Implementaci贸n de lectura de archivo
def write_file(self, filename, content):
# Implementaci贸n de escritura de archivo
class Authenticator:
def authenticate_user(self, username, password):
# Implementaci贸n de autenticaci贸n de usuario
Al adherirse a SRP, las responsabilidades de la gesti贸n de archivos y la autenticaci贸n de usuarios est谩n claramente separadas, lo que conduce a un dise帽o m谩s mantenible y modular.