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.