23 Padrões de design, capítulo 12: Modo de método de modelo java
Definição: define a estrutura de um algoritmo em uma operação e atrasa algumas etapas para uma subclasse, para que a subclasse possa redefinir certas etapas específicas no algoritmo sem alterar a estrutura do algoritmo.
Tipo: padrão comportamental
Diagrama de classe:
De fato, o método do modelo é um padrão frequentemente usado na programação. Vamos primeiro olhar para um exemplo. Um dia, o programador A obteve uma tarefa: dê uma variedade de números inteiros, classifique os números na matriz de pequeno a grande e imprimindo os resultados classificados. Após a análise, essa tarefa pode ser dividida aproximadamente em duas partes: classificação e impressão. A função de impressão é fácil de implementar, portanto, a classificação é um pouco problemática. Mas A tem uma maneira, primeiro complete a função de impressão e encontre outra pessoa para fazer a função de classificação.
Classe abstrata abstractSort { / *** Classificar a matriz de pequena a grande* @param Array* / abstrato protegido Sort (int [] matriz); public void ShowsorTResult (int [] Array) {this.sort (Array); System.out.print ("Resultado de classificação:"); for (int i = 0; i <Array.Length; i ++) {System.out.printf ("%3s", Array [i]); }}}Depois de escrever, encontrou um colega que acabara de se formar e começar a trabalhar e disse: Há uma tarefa, eu já escrevi a lógica principal, para que você possa implementar a lógica restante. Então, eu dei a classe AbstractSort para B e deixei B escrever para implementá -la. B assumiu o controle e viu. Era muito simples. Foi feito em 10 minutos. O código é o seguinte:
classe Concretesort estende abstractSort {@Override Protected void Sort (int [] Array) {for (int i = 0; i <Array.Length-1; i ++) {selectSort (Array, i); }} void privado selectSort (Int [] Array, int index) {int minValue = 32767; // variável de valor min Variável int indexmin = 0; // Variável de índice de valor mínimo int temp; // variável de encenação para (int i = index; i <array.length; i ++) {if (array [i] <minValue) {// encontre o valor mínimo minvalue = array [i]; // armazenamento o valor mínimo indexmin = i; }} Temp = array [index]; // Troque dois valores numéricos Array [index] = Array [indexmin]; Array [indexmin] = temp; }}Depois de escrevê -lo, dê a A, e um levará para executá -lo:
public class Client {public static int [] a = {10, 32, 1, 9, 5, 7, 12, 0, 4, 3}; // Matriz de dados predefinida public static void main (string [] args) {abstractSort s = new concreteSort (); s.showsortResult (A); }} Resultados em execução:
Resultados de classificação: 0 1 3 4 5 7 9 10 12 32
Ele funciona normalmente. OK, a tarefa é concluída. É isso mesmo, este é o padrão de método do modelo. A maioria dos graduados que acabou de entrar no local de trabalho deve ter experiências semelhantes a B. Uma tarefa complexa é escrita pelas grandes pessoas da empresa e depois escrever os métodos mais simples em abstração e entregá -los a outros colegas para se desenvolver. Essa divisão do trabalho é frequentemente usada em empresas com níveis relativamente óbvios de programadores. Por exemplo, se uma equipe de projeto possui arquitetos, engenheiros seniores e engenheiros juniores, os arquitetos geralmente usam um grande número de interfaces e classes abstratas para reunir a lógica de todo o sistema, e a codificação de implementação é entregue a engenheiros seniores e engenheiros juniores de acordo com a dificuldade. Que tal isso, você usou o modo de método de modelo?
Estrutura do padrão de método de modelo
O padrão de método de modelo consiste em uma classe abstrata e em um (ou um grupo de) classes de implementação por meio de estruturas de herança. Os métodos nas classes abstratos são divididos em três tipos:
Método resumo: a classe pai se declara apenas, mas não a implementa, mas define as especificações e as implementa por sua subclasse.
Método do modelo: declarado e implementado por classes abstratas. De um modo geral, os métodos de modelo chamam métodos de abstratos para concluir as principais funções lógicas e os métodos de modelo são definidos principalmente como tipos finais, indicando que as principais funções lógicas não podem ser reescritas em subclasses.
Método do gancho: declarado e implementado por classes abstratas. No entanto, as subclasses podem ser estendidas e as subclasses podem afetar a lógica dos métodos de modelo, estendendo os métodos de gancho.
A tarefa das classes abstratas é construir uma estrutura lógica, que geralmente é escrita por pessoal experiente, porque a qualidade das classes abstratas determina diretamente se o programa é estável.
As classes de implementação são usadas para implementar detalhes. O método de modelo em classes abstratas completa a lógica de negócios implementando métodos de extensão de classe. Desde que o método de extensão na classe de implementação passe um teste de unidade, a função geral geralmente não terá grandes erros sob a premissa de que o método do modelo está correto.
Vantagens e cenários aplicáveis do método de modelo
Fácil de expandir. De um modo geral, o método de modelo em uma classe abstrata é uma parte que não é fácil de mudar, enquanto o método abstrato é uma parte fácil de alterar reversamente. Portanto, ao adicionar a classe de implementação, geralmente é fácil expandir a função, que está em conformidade com o princípio de abertura e fechamento.
Fácil de manter. Para o modo de método do modelo, é precisamente porque sua lógica principal é a mesma que o método do modelo é usado. Se o método do modelo não for usado, é muito inconveniente manter o mesmo código em uma bagunça.
Mais flexível. Como existem métodos de gancho, a implementação de subclasses também pode afetar a operação da lógica principal na classe pai. No entanto, embora seja flexível, porque as subclasses afetam a classe pai, violar o princípio de substituição de Richter também trará riscos ao programa. Isso coloca requisitos mais altos no design de classes abstratas.
Quando várias subclasses têm o mesmo método e os métodos são logicamente os mesmos, você pode considerar o uso do padrão do método do modelo. Esse modo também é adequado para o uso do programa quando a estrutura principal do programa é a mesma e os detalhes são diferentes.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.