Skip to content

Violacion a Liskov Substitution Principle (LSP) #71

Description

@xio0110

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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