Skip to content

Violacion a Liskov Substitution Principle (LSP) #60

Description

@ivandresalin

El método login cambia de comportamiento según sea el rol, lo que contradice el diseño LSP, ya que necesita un role como parámetro para que la implementación funcione. Lo que quiere decir que no podremos inyectar un UserService y asumir que se comporte igual a cualquier role.

Como solucion:
Quitamos el parámetro UserRole ya que cada clase presentará un rol específico.
Dividimos la clase UserServiceImpl en dos clases específicas CustomerUserService y SellerUserService las cuales implementan la interfaz UserService eliminando la lógica condicional (if/ equals(role)).

Image

Como resultado, cada clase representa un comportamiento específico, además podremos agregar un nuevo tipo de usuario sin modificar el código existente lo que cumpliría OCP también.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions