click below
click below
Normal Size Small Size show me how
Principios solid
Principios solida
| Question | Answer |
|---|---|
| ¿Qué establece el Principio de Responsabilidad Única (SRP)? | Una clase debe tener una única razón para cambiar, es decir, una única responsabilidad. |
| ¿Qué problema genera violar SRP? | Hace que una clase tenga múltiples razones para cambiar, lo que la hace difícil de mantener y modificar. |
| ¿Cómo se aplica SRP en una clase de servicio en Java? | Separando lógica de negocio en una clase y persistencia de datos en otra (ejemplo: UserService y UserRepository). |
| ¿Qué patrón de diseño ayuda a cumplir SRP? | Facade y Repository ayudan a dividir responsabilidades en capas separadas. |
| ¿Qué significa que una clase debe estar "abierta para extensión pero cerrada para modificación"? | Podemos agregar nuevas funcionalidades sin modificar el código existente. |
| ¿Cuál es un mal ejemplo de OCP? | Usar muchos if o switch para manejar diferentes casos en lugar de herencia o polimorfismo. |
| ¿Cómo aplicar OCP en una aplicación de Java? | Usando interfaces y clases abstractas, permitiendo agregar nuevas implementaciones sin modificar código existente. |
| ¿Qué patrón de diseño promueve OCP? | Strategy Pattern, ya que permite agregar nuevos comportamientos sin modificar el código base. |
| ¿Qué dice el Principio de Sustitución de Liskov? | Una subclase debe poder reemplazar a su clase base sin afectar la funcionalidad. |
| ¿Cómo se detecta una violación de LSP? | Cuando una subclase lanza excepciones inesperadas o cambia el comportamiento esperado de la clase base. |
| ¿Cuál es un ejemplo de violación de LSP en Java? | Si Square hereda de Rectangle y cambia cómo funcionan los métodos setWidth() y setHeight(), rompiendo la lógica esperada. |
| ¿Cómo evitar violaciones de LSP en la programación orientada a objetos? | Usar composición en lugar de herencia cuando una subclase no cumple todas las reglas de la clase base. |
| ¿Qué problema evita el Principio de Segregación de Interfaces? | Evita que una clase implemente métodos innecesarios que no usa. |
| ¿Qué indica que una interfaz viola ISP? | Cuando una clase implementa una interfaz y deja varios métodos vacíos o con throw new UnsupportedOperationException(). |
| ¿Cómo corregir una interfaz que viola ISP? | Dividir una interfaz grande en varias interfaces más específicas. |
| ¿Qué patrón de diseño ayuda a aplicar ISP? | Adapter Pattern, ya que permite crear adaptadores para diferentes interfaces sin sobrecargar una única clase. |
| ¿Qué establece el Principio de Inversión de Dependencias (DIP)? | Los módulos de alto nivel no deben depender de módulos de bajo nivel, sino de abstracciones. |
| ¿Cómo se evita la violación del DIP en Java? | Usando interfaces en lugar de dependencias concretas en clases. |
| ¿Qué técnica en Java promueve DIP? | Inyección de dependencias (DI), utilizada en frameworks como Spring. |
| ¿Cuál es un ejemplo de violación del DIP? | Cuando una clase depende directamente de una implementación concreta en lugar de una interfaz (ejemplo: UserService depende de MySQLDatabase en lugar de Database). |
| ¿Qué establece el Principio de Responsabilidad Única (SRP)? | Cada clase debe tener una única razón para cambiar, es decir, una única responsabilidad. |
| ¿Cuál es un problema común si se viola SRP? | Una clase con muchas responsabilidades se vuelve difícil de mantener y modificar. |
| ¿Qué significa que una clase debe estar "abierta para extensión pero cerrada para modificación"? | Podemos agregar nuevas funcionalidades sin modificar el código existente. |
| ¿Cómo se aplica OCP en Java? | Usando polimorfismo e interfaces en lugar de condicionales para manejar nuevos casos. |
| ¿Qué dice el Principio de Sustitución de Liskov? | Una subclase debe poder reemplazar a su clase base sin romper el código. |
| ¿Qué problema indica que se está violando LSP? | Cuando un método en una subclase lanza excepciones inesperadas o cambia el comportamiento esperado. |
| ¿Qué problema evita el Principio de Segregación de Interfaces? | Evita que una clase implemente métodos que no necesita, promoviendo interfaces específicas. |
| ¿Cómo aplicar ISP correctamente? | Dividir interfaces grandes en múltiples interfaces pequeñas y especializadas. |
| ¿Cómo se aplica el Principio de Inversión de Dependencias? | Haciendo que las clases dependan de interfaces o abstracciones, no de implementaciones concretas. |
| ¿Qué técnica en Java promueve DIP? | Inyección de dependencias (DI), usada en frameworks como Spring. |