quinta-feira, 23 de fevereiro de 2012

Pattern: Template Method

Definição: Padrão de comportamento, é utilizado quando uma parte do algoritmo depende de outros algoritmos, no qual são abstratos, e podem ter várias formas.

Explicação:
Uma classe abstrata possui um método final e executa métodos abstratos que serão implementados nas classes filhas.

Exemplo:
Realizando a compra de um pacote turístico, você possui a execução de um roteiro, no qual será ir para algum lugar, passear neste lugar e voltar para o seu ponto de partida.
A execução do roteiro é a mesma, "ir" "passear" voltar, o que muda é qual o seu meio de transporte para que você possa ir e voltar e aonde você irá passear. A execução do algoritmo que não muda fica definida em um template, que irá chamar os métodos que serão definidos nas classes filhas.
 
public abstract class Viagem {

 public final void viajar() {
  ir();
  passear();
  voltar();
 }

 public abstract void ir();

 public abstract void voltar();

 public abstract void passear();

}

class PacoteA extends Viagem {

 public void ir() {
  System.out.println("Ir de avião");
 }

 public void voltar() {
  System.out.println("Voltar de avião");
 }

 public void passear() {
  System.out.println("Passear em São Paulo");
 }

}

class PacoteB extends Viagem {
 public void ir() {
  System.out.println("Ir de ônibus");
 }

 public void voltar() {
  System.out.println("Voltar de ônibus");
 }

 public void passear() {
  System.out.println("Passear no Rio de Janeiro");
 }
}

class PacoteC extends Viagem {
 public void ir() {
  System.out.println("Ir de ônibus");
 }

 public void voltar() {
  System.out.println("Voltar de ônibus");
 }

 public void passear() {
  System.out.println("Passear na Bahia");
 }
}

Percebam que é um algoritmo bem simples.
Obrigado.

Nenhum comentário:

Postar um comentário