Como criar Classe eficiente para validação

Olá Pessoal,

Preciso de uma ajuda com a melhoria de validação de parâmetros, tenho atualmente alguns métodos representados pelos exemplos abaixo (methodoOne,methodotwoe,methodothree) em que recebe um objeto e uma String adicional, e antes de realizar a ação preciso validar se os parâmetros recebidos são válidos ( !=null && !isEmpty()), porém tenho uma repetição de códigos com ifs e quero melhor isso. Vi algo com a classe Errors mas ainda não utilizei e quero solicitar ajuda dos colegas que tenham implementado algo similar.

public void methodoOne (Object objetoRecebido, String parametro1) {
	
	if ( objetoRecebido != null && !parametro1.isEmpty() ) {
		
		if ( !objetoRecebido.um() && !objetoRecebido.dois() && !objetoRecebido.tres() ) {
			// Faça alguma coisa
		} else {
			throw new IllegalArgumentException();
		}
	}
}

public void methodoTwo (Object objetoRecebido, String parametro2) {
	
	if ( objetoRecebido != null && !parametro2.isEmpty() ) {

		if ( !objetoRecebido.um() && !objetoRecebido.dois() && !objetoRecebido.tres() ) {
			// Faça alguma coisa
		} else {
			throw new IllegalArgumentException();
		}			
	}

}

public void methodoThree (Object objetoRecebido, String parametro3) {
	
	if ( objetoRecebido != null && !parametro3.isEmpty() ) {

		if ( !objetoRecebido.um() && !objetoRecebido.dois() && !objetoRecebido.tres() ) {
			// Faça alguma coisa
		} else {
			throw new IllegalArgumentException();
		}		
		
	}
}

// Nova implementação 
public void validate(Object objetoRecebido, Errors erros) {
	
	
}
public class Main {

	public static void main(String[] args) throws Exception {
		new Main().testar();
	}
	
	public void testar() {
		// Chama o método "execute" passando os argumentos e qual a função que será executada
		execute(new MyObject(), "parametro1", methodOne());
		execute(new MyObject(), "parametro2", methodTwo());
		execute(new MyObject(), "parametro2", methodThree());
	}
	
	// Como as validações são iguais, coloquei elas num único método que será o responsável
	// por executar a ação (Execution)
	public void execute(MyObject objetoRecebido, String parametro, Execution execution) {
		if (objetoRecebido != null && !parametro.isEmpty()) {
			if (!objetoRecebido.um() && !objetoRecebido.dois() && !objetoRecebido.tres()) {
				execution.execute(objetoRecebido, parametro);
			} else {
				throw new IllegalArgumentException();
			}
		}
	}
	
	// Os métodos (methodOne, methodTwo e methodThree) que definem as execuções em cima do parâmetros "objetoRecebido" e "parametro"
	// irá retornar uma função lambda (java8) que define o que será processado
	
	public static Execution methodOne() {
		return (MyObject objetoRecebido, String parametro) -> {
			System.out.println("methodOne: " + objetoRecebido + " - " + parametro);
		};
	}
	
	public Execution methodTwo() {
		return (MyObject objetoRecebido, String parametro) -> {
			System.out.println("methodTwo: " + objetoRecebido + " - " + parametro);
		};
	}

	public Execution methodThree() {
		return (MyObject objetoRecebido, String parametro) -> {
			System.out.println("methodThree: " + objetoRecebido + " - " + parametro);
		};
	}
	
	// Define um contrato para execução para os parâmetros "objetoRecebido" e "parâmetro", ous seja,
	// Força a quem for usar, criar um método que recebe esses 2 parametros e faz algo com eles
	@FunctionalInterface
	private interface Execution {
		void execute(MyObject objetoRecebido, String parametro);
	}
	
	// Criei essa classe apenas para ter os métodos "um", "dois" e "tres" para poder testar
	private static class MyObject {
		public boolean um() {
			return false;
		}
		
		public boolean dois() {
			return false;
		}
		
		public boolean tres() {
			return false;
		}
	}
}

Precisa de java8 ou superior

Lucas muito obrigado pelo retorno, mas confesso que não consegui enteder bem a lógica de forma que possa aplicar a solução, consegue detalhar o passo a passo que elaborou ?

Desde já muito obrigado.

Editei o exemplo com alguns comentários. Veja se tu entende lah de boa.