Modo de Template
No modo de modelo (Padrão Template) e uma classe abstrata que define como executá-lo descreve um método / template. Suas subclasses precisa substituir o método pode conseguir, mas é chamada de classe abstrata será definido. Este tipo de padrões de projeto pertencem padrões comportamentais.
introdução
Intenção: Definir um algoritmo de operação esqueleto, enquanto o adiamento alguns passos para subclasses.Método de modelo permite que as subclasses, sem alterar a estrutura de um passo específico algoritmo do algoritmo pode ser redefinido.
Solução principal: Algum método comuns, mas em cada sub-classe re-escrever esta abordagem.
Quando usar: Existem alguns métodos comuns.
Como resolver: estes algoritmo geral abstraída.
O código de chave: resumo classe implementa as outras etapas na implementação sub-classe.
Exemplos de aplicação: 1, quando em uma casa construída, fundações, fiação, tubulações de água são os mesmos, apenas na última parte do edifício tem um armário plus plus cercas diferenças.2, Journey to the West dar um bom Buddha dentro de 81 difícil, este é um quadro lógico de nível superior. 3, Spirng em apoio Hibernate, alguns já ter dado uma boa maneira de encapsular, tais como transações abertas, obtendo Sessão, Nova Sessão e outros programadores que não têm repetido as normas de código de escrita boa, lance direta uma entidade pode ser salvo.
Vantagens: 1, parte do mesmo pacote, estendida parte variável.2, extrair código comum, de fácil manutenção. 3, o comportamento é controlado pela classe pai, implementação sub-classe.
Desvantagens: Cada diferentes implementações requerem uma subclasse de atingir, o que resulta em um aumento no número de classes, tornando o sistema mais substancial.
cenários de uso: 1, método comum sub-classe múltipla, e a mesma lógica.2, métodos importantes e complexas pode ser considerado como um método padrão.
Nota: Para evitar ações maliciosas, juntamente com os métodos de modelo gerais são palavras-chave finais.
realização
Vamos criar uma classe abstrata ação personalizadado jogo,em que o método de modelo é definido para final, por isso não será substituído.Griloejogo defutebol é uma extensão da classe de entidade, que substitui a classe abstrata.
TemplatePatternDemo,que demonstram a utilização de classeJogode demonstrar a utilização de um padrão de modelo.
passo 1
Criar uma classe abstrata, o seu método de modelo é definido para final.
Game.java
Jogo classe abstrata pública { abstrato initialize void (); abstrato vazio startPlay (); abstrato folga void (); Template // pública void play () final { // Inicializar o initialize jogo (); // Inicie o jogo startPlay (); // Fim do jogo folga (); } }
passo 2
Criar estende as classes de entidade acima da classe.
Cricket.java
classe pública Cricket estende jogo { @Override vazio folga () { System.out.println ( "Cricket Jogo Acabou!"); } @Override initialize void () { System.out.println ( "! Cricket Jogo Initialized começar a jogar."); } @Override vazio startPlay () { System.out.println ( "Cricket jogo começou Aproveite o jogo.!"); } }
Football.java
classe pública Futebol estende jogo { @Override vazio folga () { System.out.println ( "Jogo de futebol Acabou!"); } @Override initialize void () { System.out.println ( "! Football Game Initialized começar a jogar."); } @Override vazio startPlay () { System.out.println ( "Football jogo começou Aproveite o jogo.!"); } }
passo 3
Jogousando o método play modelo () para demonstrar o jogo estão definidas.
TemplatePatternDemo.java
TemplatePatternDemo classe pública { main (String [] args) public static void { Jogo = new Cricket (); game.play (); System.out.println (); jogo = new Futebol (); game.play (); } }
passo 4
Verifique saída.
Jogo do grilo inicializado! Comece a jogar. Cricket jogo começou. Aproveite o jogo! Cricket Jogo Terminado! Football Game Initialized! Comece a jogar. Futebol jogo começou. Aproveite o jogo! Jogo de futebol Terminado!