Latest web development tutorials

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.

padrão de modelo UML diagrama de

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!