Ejemplos

Ejemplo 01: Creando un validador abstracto de expresiones

En este ejemplo, crearemos una clase abstracta para validar expresiones regulares y luego implementaremos una subclase concreta que valide direcciones de correo electrónico.

En este ejemplo, crearemos una clase abstracta llamada AbstractRegexValidator que definirá un método abstracto para validar cadenas utilizando expresiones regulares. Luego, implementaremos una subclase concreta llamada EmailValidator que validará direcciones de correo electrónico.

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public abstract class AbstractRegexValidator {
    private Pattern pattern;

    public AbstractRegexValidator(String regex) {
        this.pattern = Pattern.compile(regex);
    }

    @Override
    public Object stringToValue(String text) throws ParseException {
        if(pattern.matcher(text).matches()) {
            return text;
        } else {
            throw new ParseException("Formato inválido", 0);
        }
    }
}

Ahora, implementemos la subclase concreta EmailValidator que extiende AbstractRegexValidator y utiliza una expresión regular para validar direcciones de correo electrónico.

public class EmailValidator extends AbstractRegexValidator {
    private static final String EMAIL_REGEX = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";

    public EmailValidator() {
        super(EMAIL_REGEX);
    }
}

Con esta implementación, ahora podemos crear una instancia de EmailValidator y utilizarla para validar direcciones de correo electrónico:

public class Main {
    void main() {
        EmailValidator emailValidator = new EmailValidator();

        String email1 = "test@correo.com";
        String email2 = "invalid-email";
        try {
            System.out.println(emailValidator.stringToValue(email1)); 
            System.out.println(emailValidator.stringToValue(email2)); 
        } catch (ParseException e) {
            System.out.println(e.getMessage());
        }
    }
}

En este ejemplo, el método stringToValue de la clase AbstractRegexValidator verifica si la cadena de texto coincide con la expresión regular definida. Si coincide, devuelve la cadena; de lo contrario, lanza una excepción ParseException. La clase EmailValidator proporciona la expresión regular específica para validar direcciones de correo electrónico.

Este enfoque permite una fácil reutilización del código, ya que cualquier otra clase que necesite validar diferentes tipos de cadenas puede extender AbstractRegexValidator y proporcionar su propia expresión regular.

Recuerda que este validador es posible implementarlo en cualquier contexto donde se necesite validar cadenas de texto, como formularios de entrada, validación de datos, etc.

Copyright Jesús Aurelio Castro Magaña © 2026