Padrões de projetos
• Fornecem estratégias testadas para modelar a maneira como objetos colaboram entre si em sistemas e oferecem comportamentos especiais apropriados para uma ampla variedade de aplicativos.
• Método template e Iterator são classificados dentro de padrões de projeto comportamental.
Método Template - Definição
• Lida com Algoritmos.
• Padrão utilizado em pacotes como java.awt e javax.swing • Incentiva o reuso de algoritmos • Permite que vários objetos contenham algoritmos distintos, mas requer que todos os objetos compartilhem um único algoritmo definido na superclasse.
Método Template - Definição
• Define o esqueleto de um algoritmo dentro de um método transferindo alguns de seus passos para as subclasses.
• Permite que as subclasses redefinam certos passos de um algoritmo sem alterar a estrutura do próprio algoritmo. • Resumindo: consiste na criação de um template para o algoritmo.
Método Template – O que é um template?
• É um método que define um algoritmo como uma sequência de passos. Um ou mais desses passos podem ser definidos como abstratos e implementados por uma subclasse. Isto assegura que a estrutura do algoritmo permaneça inalterada mesmo quando as subclasses fornecem parte da implementação
Método Template – Quando usar?
• Para implementar partes invariantes de um algoritmo uma única vez e deixar subclasses implementarem o comportamento variável
• Quando comportamento comum entre subclasses deveria ser fatorado e localizado numa classe comum para evitar duplicação • Para controlar extensões de subclasses
Método Template – Consequências do padrão
• Constituem uma das técnicas básicas de reuso de código. (São particularmente importantes em frameworks e bibliotecas de classes) • Levam a uma inversão de controle (O código particular de uma aplicação é chamado pelo resto do código)
Método Template – Exemplo Figura
• A ClasseAbstrata contém o template method e versões abstratas das operações