Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouVítor Napoles Alterado mais de 10 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.