Os exemplos deste artigo compartilham com você o modelo de estratégia Java para sua referência. O conteúdo específico é o seguinte
1. O padrão de estratégia é um modelo relativamente simples, também chamado de padrão de política.
A definição é a seguinte:
Defina uma família de algoritmos, encapsulam cada um e torne -os intercambiáveis.
(Defina um conjunto de algoritmos, encapsule cada algoritmo e faça -os intercambiáveis.)
O diagrama de classe geral do padrão de política é o seguinte:
Três papéis do modelo de política:
● A função de encapsulamento de contexto, também conhecida como papel de contexto, desempenha um papel de encapsulamento que conecta o passado e o futuro, bloqueia o acesso direto de módulos de alto nível a políticas e algoritmos e encapsula possíveis mudanças.
● Estratégia Estratégia abstrata Estratégia Estratégia e abstração familiar de algoritmo, geralmente uma interface, define os métodos e atributos que cada estratégia ou algoritmo deve ter,
● Estratégia concreta A função de estratégia específica implementa operações em políticas abstratas, e esta classe contém algoritmos específicos.
O padrão de política é aprovar uma política específica no construtor da função encapsulada e, em seguida, executar esta política.
O código -fonte geral do modo de política é o seguinte:
classe pública test3 {public static void main (string [] args) {// Declare uma estratégia de estratégia específica = new concretStrategy1 (); // declarar o contexto do contexto do objeto de contexto = novo contexto (estratégia); // executa o contexto do método encapsulado. }} estratégia de interface {// Regras aritméticas do modo de política public void Dosomething (); } classe ConcretStrategy1 implementa a estratégia {public void Dosomething () {System.out.println ("Regras aritméticas para estratégia específica 1"); }} classe concretStrategy2 implementa a estratégia {public void Dosomething () {System.out.println ("Regras aritméticas para estratégia específica 2"); }} contexto de classe {// Estratégia abstrata estratégia privada estratégia; // construtor define estratégias específicas de contexto público (estratégia _strategy) {this.strategy = _strategy; } // Método da estratégia encapsulada public void Doanythinig () {this.strategy.dosomething (); }}Vantagens do modelo de estratégia:
● O algoritmo pode ser alterado livremente
Isso é definido pelo próprio modelo de política. Enquanto a estratégia abstrata for implementada, ela se torna um membro da família de políticas, encapsulando -a por meio de funções de encapsulamento, garantindo que a estratégia "livremente comutável" seja fornecida ao mundo exterior.
● Evite usar várias condições para julgar
Se não houver modelo de política, vamos pensar sobre como seria? Uma família de estratégia possui 5 algoritmos de estratégia. Você precisa usar a estratégia A em algum momento e depois usar a estratégia a em algum momento.
Como projetar a estratégia B? Usar várias declarações condicionais? As declarações multi-condicionais não são fáceis de manter, e a probabilidade de erros é bastante aprimorada. Depois de usar o modo de política, outros módulos podem decidir qual estratégia adotar. A interface de acesso fornecida pela família de políticas para o exterior é a classe de encapsulamento, que simplifica as operações e evita o julgamento da declaração condicional.
● Boa escalabilidade
Isso nem precisa dizer o que tem que fazer, porque é óbvio demais. É muito fácil adicionar uma estratégia ao sistema existente. Basta implementar a interface e não há necessidade de modificar mais nada. É semelhante a um plug-in que pode ser desmontado repetidamente, o que está em conformidade com o princípio do OCP.
Desvantagens dos padrões políticos:
● O número de classes de políticas aumenta. Cada estratégia é uma classe, e a possibilidade de reutilização é muito pequena e o número de classes aumenta.
● Todas as classes de estratégia precisam ser expostas
Use cenários para o modo de política:
● Várias classes têm apenas cenários ligeiramente diferentes em algoritmos ou comportamentos.
● Cenários em que o algoritmo precisa ser alterado livremente.
● Cenários em que as regras do algoritmo precisam ser bloqueadas.
2. Extensão do modo de política - enumeração de políticas
A enumeração política é definida da seguinte maneira:
● É uma enumeração.
● É uma enumeração de padrões de estratégia concentrados.
Exemplos são os seguintes:
Pergunta: Digite 3 parâmetros e execute operações de adição e subtração. Dois dos parâmetros são do tipo int e o parâmetro restante é o tipo de string. Apenas dois símbolos "+" e "-" podem ser selecionados. Não considere nenhuma verificação complexa. O que estamos fazendo é um teste de caixa branca e o que entramos é o tipo INT padrão e o tipo de string compatível.
importar java.util.arrays; classe pública Test3 {public static void main (string [] args) {// Os dois parâmetros inseridos são o número int a = integer.parseint (args [0]); String símbolo = args [1]; // o símbolo int b = integer.parseint (args [2]); System.out.println ("O parâmetro de entrada é:"+Arrays.toString (args)); System.out.println ("O resultado em execução é:"+a+símbolo+b+"="+calculator.add.exec (a, b)); }} calculadora de enum {// adicione a operação add ("+") {public int exec (int a, int b) {return a+b; }}, // operação de subtração sub (" -") {public int Exec (int a, int b) {return a - b; }}; String value = ""; // Defina o Valor do Membro Tipo de Calculadora Privada (String _Value) {this.value = _value; } // Obtenha o valor dos membros da enumeração public string getValue () {return this.value; } // Declare uma função abstrata resumo public int exec (int a, int b); }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.