Ir al contenido principal

SOLID


Hoy estábamos hablando de conocimientos básicos de programación, y han salido los principios SOLID (que no tienen nada que ver con "METAL GEAR SOLID", pero me hace gracia).

Hace años me lo sabía de memoria, pero con el paso del tiempo se me ha quedado como una ligera reminiscencia.

Voy a aprovechar y escribir un resumen sobre estos cinco principios básicos.

SOLID es un acrónimo (Robert C.Martin) que establece los cinco principios básicos de la programación orientada a objetos y diseño. Tiene bastante relación con los patrones de diseño, y su objetivo principal es la alta cohesió-n y el bajo acoplamiento.

Cada letra tiene el siguiente significado:
  • S - Single responsibility
  • O - Open/Closed
  • L - Liskov substitution
  • I - Interface segregation
  • D - Dependency inversion

Single responsibility

Una clase para un fin simple y sencillo. Nada de meter métodos útiles, pero que no tienen sentido en esta clase.

Open/Closed

Crear clases extensibles sin necesidad de entrar al código fuente a modificarlo. El diseño debe ser abierto para poderse extender pero cerrado para poderse modificar.

Esto lo conseguimos a través de herencia y reimplementando métodos.

Sustitucion Liskov

Hay que crear todas las clases hijas para que también puedan ser tratadas como la propia clase padre. Cuando extendemos clases debemos asegurarnos de no reimplementar métodos que hagan que los métodos de la clase padre no funcionasen si se tratasen como un objeto de esa clase padre.

Interface segregation

Los interfaces deben ser específicos a una finalidad concreta. Es mejor tener muchos interfaces con  pocos métodos que tener uno solo con muchos métodos.

Dependency inversion
Hay que evitar el acoplamiento a toda costa. ¿Cómo? a través de la abstracción, para conseguir que una clase interactúe con otras clases sin que las conozca directamente.

Existen diferentes patrones como la inyección de dependencias que nos permiten invertir el control.

 Y hasta aquí mi pequeño resumen.

Un abrazo.

Entradas populares de este blog

Un bot con Telegram en Termux

En las últimas semanas he retomado un par de ideas que tuve hace algunos años: por un lado la idea de hacer un Bot con el que hacer operaciones a través de comandos específicos. En concreto me gustaría hacer poder realizar comandos de inversión en bolsa (de manera ficticia) por otro lado desplegar la aplicación en un móvil con Termux (emulador de Linux para Android) Así que os cuento los pasos que he hecho para realizar estas tareas. Creación de Bot con Telegram Busca el contacto @BotFather (es el bot oficial de Telegram para crear otros Bots). Pulsa en Iniciar o escribe /start para comenzar. Escribe el comando: /newbot BotFather te pedirá que le pongas un nombre visible a tu Bot. Ejemplo: Nombre: MiBotJava Luego te pedirá un username único que termine en Bot. Ejemplo: Username: MiBotJava_bot Si el nombre de usuario está disponible, te dará un mensaje de éxito. Obtén el token Después de crear el Bot, BotFather te dará un mensaje como este: Done! Congratulations on your new bot. You wil...

Spring Boot: Página inicial con Bootstrap

  Este es el segundo artículo de la serie sobre Spring Boot que comenzamos hace dos semanas, si quieres ver el primero puedes acceder pulsando aquí . En el primer artículo vimos cómo descargar nuestro proyecto configurado para nuestros intereses y listo para ser importado en nuestro IDE (nosotros usaremos Eclipse ). Lo primero que vamos a hacer es importar el proyecto: File -> Import Existing Maven Projects Seleccionamos el fichero pom.xml en la carpeta donde lo hemos descomprimido y esperamos unos segundos Cuando acabe la importación, esta es la estructura que nos aparecerá: Con Spring Boot no necesitamos configurar el servidor, ya se encarga él de facilitarnos la vida. Lo único que tenemos que hacer es arrancar la clase BootApplication.java , que se encargará de arrancar Tomcat y dejar nuestra aplicación funcionando en el puerto 8080.  Y si todo fuera bien, podríamos acceder a través de la URL:  http://localhost:8080/ Pero ahora mismo tenemos un error de conexión c...

Ubuntu en Android

Llevaba unos cuantos días dándole vueltas para contratar un servidor on line. Lo necesito para lanzar procesos puntuales y de manera periódica. No necesito mucha CPU ni RAM, y aunque no lo necesito 24 horas encendido, no he encontrado ningún servicio que tenga estas características y que sea económico. Pero pensando y pensando, se me ocurrió la idea de cargar los procesos en mi móvil (Android), y lanzarlos desde allí. Pero Android no viene con JAVA... Me puse a buscar, y encontré un programa en la tienda de Google llamado "Termux" ( https://play.google.com/store/apps/details?id=com.termux ), que es un emulador de la consola de Linux. Cuando leí la palabra "emulador" se me encendieron los ojos, y empecé a pensar, pues si es un emulador podré instalar JAVA (si, si se puede), y luego dije, si me instalo GIT y MAVEN no me para nadie (si, también se puede), después fui más allá y se me ocurrió instalar Ubuntu, porque claro, si lo tengo, en mi móvil h...