leoancab / POO6_1P_G1_CabreraGalabayMendoza

10 stars 1 forks source link

Violación a Interface Segregation Principle en clase servicios. #10

Open alexoterol opened 3 months ago

alexoterol commented 3 months ago

En los servicios, la Interface Segregation no se aplica gracias a la ausencia de ella. El método seleccionarCond puede tener una Posible No Sostenibilidad de Subclases, ya que el método seleccionar conductor va a necesitar el tipo de vehículo. Una posible solución sería Definir Interfaces Específicas: Crear interfaces pequeñas y específicas para las funcionalidades necesarias.

En los servicios, la clase padre tiene un método que es seleccionarCond que tiene una Dependencia Directa de Detalles Específicos TipoVehiculo es una enumeración, el código depende de los valores específicos MOTO y AUTO. Esto hace que sea difícil cambiar la implementación o agregar nuevos tipos de vehículos sin modificar este método directamente. Una posible solución está en Introducir una interfaz o clase abstracta para Vehiculo.

public abstract class Servicio  implements Seleccionable{
   //atributos y métodos necesarios
   seleccionarConductor
}
public Interface Seleccionable{
   //atributos y métodos necesarios
   Conductor seleccionarConductor(List<Conductor>);
}
public class servicioDelivery extends Servicio  {
   //atributos y métodos necesarios
   Conductor seleccionarConductor(List<Conductor>){
      //lógica
   }
}
public abstract class vehiculo{
   //clase vehiculo
}

public class moto extends vehiculo{
   //clase moto
}

image Imagen arreglando DIP

image Imagen arreglando Interface Segretation

leoancab commented 3 months ago

Quien eres y como encontraste mi repositorio?