O padrão de método de modelo é definido como:
Um esqueleto ou etapa de um algoritmo é definido em um método e algumas etapas são atrasadas nas subclasses para implementação. O método de modelo permite que as subclasses redefinam algumas etapas no algoritmo sem alterar a estrutura do algoritmo.
O método do modelo define uma sequência de processo de operação na classe base, que pode garantir que as etapas sejam realizadas em sequência. Algumas implementações específicas de algumas etapas foram declaradas na classe base, e as implementações específicas de algumas etapas alteradas são entregues à subclasse para implementar, atrasando algumas etapas na subclasse. Um dos maiores benefícios do método de modelo é que ele pode definir um processo de negócios a ser executado em uma determinada ordem estrita, controlando as etapas de execução de todo o algoritmo.
Este método define o algoritmo em um conjunto de etapas, nas quais todas as etapas que desejam que a subclasse realize implementação personalizada seja definida como métodos abstratos. A característica das classes base abstratas é que o método do modelo geralmente é definido como final, o que impede que a subclasse substitua as etapas do algoritmo, implementando algumas das mesmas operações ou etapas diretamente na classe base e definindo algumas das etapas de mudança para resumo e a subclasse a serem concluídas.
Exemplo de implementação de Java
Diagrama de classe:
/ *** Modelo de processo de negócios, fornecendo a estrutura básica*/ public abstract class Basetemplate {public abstrate void Part1 (); Public Resumo Void Part2 (); Public Resumo Void Part3 (); // Para obter resultados estritamente experimentais, o final não pode ser reescrito usando o vazio final usetemplatemethod () {Part1 (); part2 (); parte3 (); }} / ** * Método de implementação do modelo 1 */ classe pública Templatemethod estende Basetemplate {@Override public void Part1 () {System.out.println ("Modelo Método 1"); } @Override public void Part2 () {System.out.println ("Modelo Método 2"); } @Override public void Part3 () {System.out.println ("Modelo Método 3"); }} / ** * Método de implementação do modelo 2 * @Author Stone * */ Public Class Templatemethod2 estende BasEtemplate {@Override public void Part1 () {System.out.println ("METODOMENTO MELATEMENTE 11"); } @Override public void Part2 () {System.out.println ("Método de modelo 22"); } @Override public void Part3 () {System.out.println ("Método do modelo 33"); }} public class Test {public static void main (string [] args) {basetemplate tm = new templatemethod (); tm.Usetemplatemethod (); System.out.println (""); Bastemplate tm2 = novo templatemethod2 (); tm2.Usetemplatemethod (); }}Imprimir:
Método do modelo 1 Modelo Método 2 Modelo Método 3 Modelo Método 11 Modelo Método 22 Modelo Método 33