Rodrigo, isso foi uma coisa que me incomodou muito, eu ter o parametro na assinatura do método que não vou utilizar!
Pensamos em uma validação de registrar um usuário por exemplo, em uma das classes eu vou ter que utilizar o argumento String nome por exemplo, em outra classe vou ter que utilizar o double valor, em outra classe o boolean registrado... Então, independentemente da classe, como implementam a mesma interface eu terei que ter obrigatoriamente em todas as classes o método void validation(String nome, double valor, boolean registrado) por exemplo.
Mas tem classes de validação que não vou utilizar o double valor, a outra não vou utilizar o boolean, na outra n vou utilizar aquilo... isso foi algo que me incomodou, pois o atributo está na assinatura do método mas não está sendo utilizado.
Eu pensei em uma forma de melhorar isso. Eu criei uma classe, exemplo : RegisterUserArgs onde dentro dela terá double valor, String nome e boolean registrado. e na interface eu terei o método agora void validation(RegisterUserArgs args) aí agora dentro de cada classe que implementa a interface, eu só vou chamar o atributo que me interessa dentro daquela classe, agora não teremos mais esse problema do atributo ficar na assinatura do metodo de forma desnecessaria.
UM exemplo bem básico, por favor dê uma olhada, estou a muito tempo tentando RESOLVER essa arquitetura para ficar mais "FECHADINHA":