Template Method


A principal funcionalidade deste padrão de projeto é criar métodos genéricos e passar a responsabilidade de implementação as subclasses ou desenvolver métodos genéricos e alguma parte ou funcionalidade deste método possa ser feito nas subclasses.

Vamor fazer um exemplo prático para melhor entendermos:

Varmos criar uma classe conforme abaixo:


abstract public class Operacao {
abstract int handleEfetuarOperacao(int valor1,int valor2);
public void efetuarOperacao(int valor1, int valor2){
int resultado = handleEfetuarOperacao(valor1, valor2);
System.out.println("O resultado é: "+ resultado);
}
}

No código acima criamos uma classe abstrata que possui o método abstrato handleEfetuarOperacao(int valor1, valor2) que as classes filhas de Operacao serão obrigadas a implementar e possuimos também nosso método efetuarOperacao(int valor1, int valor2), que utiliza dos serviços de handleEfetuarOperacao que será implementado pelas classes filhas.

Vamos criar mais uma classe:


public class Soma extends Operacao {
@Override
public int handleEfetuarOperacao(int valor1, int valor2) {
return valor1 + valor2;
}
}

Observe que na classe acima herdamos de Operacao, portanto reimplementamos o método handleEfetuarOperacao devolvendo a soma dos valores passados por parâmetro.

Vamos agora fazer outra classe:


public class Subtracao extends Operacao {
@Override
public int handleEfetuarOperacao(int valor1, int valor2) {
return valor1 - valor2;
}
}

Na classe acima também herdamos de Operacao, portanto reimplementamos o método handleEfetuarOperacao

mas desta vez devolvendo a subtração dos parâmetros.

Vamos agora fazer uma classe que utilizará estes métodos:


public class Cliente {
public static void main(String[] args) {
Operacao op = new Soma();
Operacao op2 = new Subtracao();
op.efetuarOperacao(10, 4);
op2.efetuarOperacao(10, 4);
}
}

Na classe acima criamos dois objetos Operacao um Soma e outro Subtracao e em ambos chamamos o método efetuarOperacao(10,4) passando os mesmos valores nas duas chamadas, porém a primeira chamada irá invocar o método handleEfetuarOperacao da classe Soma e o segundo irá chamar o da classe Subtracao.

Estes serão os resultados obtidos:
O resultado é: 14
O resultado é: 6

Ok, finalizamos este post aqui.

abraço.

,

  1. Nenhum comentário ainda.
(não será publicado)