es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo separar un código común del código específico de implementación?

Tengo algo así:

switch(type){
    case "CAR":
       return new Car();
    case "BIKE":
       return new Bike();
}

Ahora, se requiere agregar una API común para ambos para verificar si el tipo de entrada es válido, solo cuando la bandera de validación es verdadera.

¿Puedes sugerir algún diseño aquí? ¿Qué sería lo mejor?

Estoy pensando en algo como:

if(flag== true)
  return new Validator();
switch(type){
    case "CAR":
       return new Car();
    case "BIKE":
       return new Bike();
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en Java, OOP, declaraciones condicionales y patrones de diseño de fábrica, mi sugerencia para el requisito dado sería la siguiente:

    1. Crear una nueva clase llamada “TypeValidator” que contenga un método llamado “isValidType” que tome el tipo como argumento y devuelva un valor booleano indicando si el tipo es válido.
    2. Modificar la declaración switch para comprobar si la variable validateFlag es verdadera antes de devolver el objeto:

    if(validateFlag && !TypeValidator.isValidType(type)){
        return null; // o lanzar una excepción
    }
    
    1. Devolver una instancia de la clase TypeValidator en lugar de devolver null o lanzar una excepción, dependiendo de los requisitos.

    Este patrón de diseño permite agregar validaciones para comprobar si el tipo de entrada es válido mientras se mantiene la funcionalidad actual de la declaración switch.

Comments are closed.