Boa noite, pessoal.
Estou tendo uma certa dificuldade para entender o funcionamento do Template Method.
Vi que ele se diferencia de uma classe abstrata qualquer porque encapsula o código de um método abstrato.
Estava vendo o seguinte exemplo:
[code]package br.com.camilolopes.templatemethod;
/*
- classe que tem os template method baseados
- em métodos abstratos
*/
public abstract class Conta {
private double saldo;
public void deposita(double valor){
saldo = valor;
}
public void saque(double valor){
saldo -=valor;
saldo -=this.taxaConta();
}
//cada conta tem uma taxa diferente
public abstract double taxaConta();
public double getSaldo() {
return saldo;
}
}[/code]
No caso desse, o uso do Template estaria em
public void saque(double valor){
saldo -=valor;
saldo -=this.taxaConta();
}
Correto? Pois o taxaConta() é um método abstrato e será definido nas subclasses que virão.
O que não entendo é porque desse encapsulamento. Eu estou chamando um método abstrato de certa classe através de um método da mesma classe (uma classe abstrata).
Acho que perdi o jeito depois da greve das universidades. :lol:
Alguém pode me dar uma breve explicação e/ou exemplos de fácil entendimento?
Grato.