A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Projeto de Sistemas de Software Sérgio Luiz Ruivace Cerqueira

Apresentações semelhantes


Apresentação em tema: "Projeto de Sistemas de Software Sérgio Luiz Ruivace Cerqueira"— Transcrição da apresentação:

1 Projeto de Sistemas de Software Sérgio Luiz Ruivace Cerqueira
Template Method Projeto de Sistemas de Software Sérgio Luiz Ruivace Cerqueira

2 Propósito Esse padrão define que sejam implementadas certas partes de um algoritmo na classe abstrata e as que não foram implementadas devem ser nas classes filhas concretas. Assim, é possível aplicar determinados comportamentos no algoritmo e reusar o mesmo algoritmo, de acordo com as classes filhas. © LES/PUC-Rio

3 Motivação Considere um framework para jogos de tabuleiro.
A classe Jogo têm os métodos abstratos: inicializarJogo(), fazerJogada(Jogador), fimJogo() e imprimirGanhador() O método template é jogarPartida(Jogadores). Esse método inicializa a partida e enquanto o jogo não termina um jogador faz uma jogada. No final o vencedor é impresso. Dessa forma é possível criar diversos jogos diferentes reutilizando o algoritmo de jogar uma partida. © LES/PUC-Rio

4 Aplicabilidade Útil para a implementação de frameworks e aplicações flexíveis. Pode ser utilizado para implementar as partes invariantes de um algoritmo uma só vez e deixar para as subclasses a implementação do comportamento que pode variar Quando classes contem código replicado, esse padrão pode ser usado para fundir o código repetido e deixar as subclasses implementarem as variações. Além de poder ser usado para controlar extensões de subclasses. © LES/PUC-Rio

5 Estrutura © LES/PUC-Rio

6 Participantes AbstractClass ConcreteClass
Define métodos abstratos que as subclasses concretas implementam. Implementa um método concreto template que contem o esqueleto de um algoritmo. Além disso o método template invoca os métodos necessários para a execução do algoritmo inclusive os métodos abstratos, que são implementados nas subclasses concretas. ConcreteClass Implementa os métodos abstratos necessários para a execução do método template. Redefine métodos da AbstractClass. © LES/PUC-Rio

7 Colaborações ConcreteClass faz uma chamada à AbstractClass, que contem o esqueleto do algoritmo, após isso o templateMethod() faz as devidas chamadas à ConcreteClass. © LES/PUC-Rio

8 Conseqüências Facilita a reutilização de código
Inversão de Controle (IoC) Os desenvolvedores são obrigados a saber quais classes devem e quais podem ser redefinidas. © LES/PUC-Rio

9 Código de Exemplo © LES/PUC-Rio

10 Código de Exemplo © LES/PUC-Rio

11 Referencias Gamma et al., Padrões de Projeto - soluções reutilizáveis de software orientado a objetos, Porto Alegre : Bookman , 2000. Wikpedia, Template method pattern, acessado em 5 de abril de 2009. © LES/PUC-Rio


Carregar ppt "Projeto de Sistemas de Software Sérgio Luiz Ruivace Cerqueira"

Apresentações semelhantes


Anúncios Google