| Responsabilidad Única |
SRP |
Single Responsibility Principle |
Una clase debe tener una única razón para cambiar (una sola tarea). |
Una clase Factura genera la factura, pero otra clase FacturaRepositorio la guarda en la BD. |
| Abierto / Cerrado |
OCP |
Open/Closed Principle |
Las entidades deben estar abiertas para su extensión, pero cerradas para su modificación. |
Usar herencia o interfaces para añadir nuevas formas de pago sin tocar el código del ProcesadorDePagos. |
| Sustitución de Liskov |
LSP |
Liskov Substitution Principle |
Las subclases deben poder sustituir a sus clases base sin alterar el comportamiento del programa. |
Si Pájaro tiene un método volar(), una clase Avestruz no debería heredar de ella si no puede volar. |
| Segregación de Interfaces |
ISP |
Interface Segregation Principle |
Es mejor tener muchas interfaces específicas que una sola interfaz generalista "gorda". |
No obligues a una ImpresoraSencilla a implementar una interfaz Multifuncion con métodos de fax() y escanear(). |
| Inversión de Dependencias |
DIP |
Dependency Inversion Principle |
Depende de abstracciones (interfaces), no de clases concretas (implementaciones). |
Un Pedido no debe instanciar un ServicioEmail directamente; debe recibir una interfaz IMensajeria. |