SOLID: Principio de responsabilidad única

Buenas a todas y todos, hoy comenzamos una serie de tutoriales acerca de los principios SOLID:


- Single responsibility

- Open / closed

- Liskov substitution

- Interface segregation

- Dependency inversion


En cada entrada, hablaremos de 1 de los 5 principios SOLID, hoy comenzaremos con el de responsabilidad única, vamos a ello :)


El principio de responsabilidad única, es el mas sencillo de entender de los 5 principios que tenemos, lo que nos viene a decir es que una clase solo debe hacer una única cosa, ni 2 ni 3, solo una.


Veamos esto con un ejemplo.


Supongamos que tenemos la clase Computer:


public class Computer {
    private String brand;
    private int price;
   
    private Database db;
    
    public Computer(String brand, int price, Database db) {
        this.brand = brand;
        this.price = price;
        this.db = db;
    }
    
    private saveComputer(Computer computer) {
        this.db.save(computer);
    }
    ...

Como vemos, la clase Computer, no solo se encarga de representar un ordenador y sus métodos para obtener datos, sino que además se encarga de almacenar un ordenador en base de datos, esto no debería ser así, la clase hace 2 cosas y solo debe hacer 1.


Para corregir esto, podemos crear una nueva clase ComputerDB, y llevarnos el método saveComputer() a esta clase y eliminarlo de Computer:


public class ComputerDB {
    private Database db;
    
    public ComputerDB(Database db) {
        this.db = db;
    }
    
    private saveComputer(Computer computer) {
        this.db.save(computer);
    }
    ...

Y esto es todo, este principio es bastante sencillo de explicar y de entender, ¿has encontrado un mal uso de este principio en tu código?


Como última reflexión, la S de SOLID, es muy similar a la I de segregación de la interfaz, ¿o tú que opinas?


Espero que te haya gustado, nos vemos en la próxima :)

183 vistas0 comentarios

Entradas Recientes

Ver todo

©2020 por Juanma Perez.