A postura correta usada no modo de estratégia no SPRING

A postura correta usada no modo de estratégia no SPRING

 

1. Introdução ao modo de estratégia    

      Modo de estratégia: o modo de estratégia é uma ferramenta poderosa que pode substituir um grande número de códigos if-else. Existem muitos cenários de aplicação: como pagamento (pagamento WeChat, pagamento Alipay, pagamento de abertura de banco), descriptografia de plataforma de comércio eletrônico integrada ( decodificação pdd, decodificação dj, Taobao) decriptografar), o modelo de estratégia fornece uma entrada para uma solução unificada para o mundo exterior, e a estratégia de solução específica é escolhida por você; o script que frequentemente ouvimos é que um desenvolvedor muito zangado que escreve se -else deduz um salário de 1000, o que mostra como as pessoas de alto nível odeiam -else, então o modelo estratégico é particularmente importante para reduzir o grau de acoplamento da organização do projeto e reduzir o custo de manutenção do projeto.

 

2. O uso do modo de estratégia

     Vamos escolher um dos cenários da introdução acima, por exemplo, em um projeto de logística, integrando várias plataformas de e-commerce e, em seguida, descriptografando as informações do destinatário do pedido.

     (1) Definir a interface da estratégia

public interface IDecryptStrategyService {

    /**
     * 做解密操作
     *
     * @param order 订单数据
     */
    void doDecrypt(Order order);
}

  (2) A realização específica da estratégia definida

@Service
public class PddDecryptStrategyService implements IDecryptStrategyService {

    /**
     * 做解密操作
     *
     * @param order 订单信息
     */
    public void doDecrypt(OrderInfo order) {
       doSomthing();
    }
}
@Service
public class JdDecryptStrategyService implements IDecryptStrategyService {


    /**
     * 做解密操作
     *
     * @param order 订单信息
     */
    public void doDecrypt(OrderInfo order) {
       doSomthing(order);
    }
}

(4) Implementação do seletor de estratégia definida pela implementação

@Service
public class DecryptStrategySelector {

    @Autowired
    private Map<String, IDecryptStrategyService> decryptStrategyServiceMap;

    public void doDecrypt(OrderInfo order) {
     // 获取策略名称map
     Map<String, String> strategyMap = Enums.PlantDecryptStrategyEnum.getMap();
     // 获取策略名称
     String strategyName = strategyMap.get(order.getPlantCode);
     // 获取策略
     IDecryptStrategyService decryptStrategyService = decryptStrategyServiceMap.get(strategyName);
     // 执行策略
     decryptStrategyService.doDecrypt(order);
    }
}


public class Enums {
 
 public enum PlantDecryptStrategyEnum {

        PDD("PDD", "pddDecryptStrategyService");
        JD("JD", "jdDecryptStrategyService");
        private String code;
        private String strategyName;

        PlantDecryptStrategyEnum(String code, String strategyName) {
            this.setCode(code);
            this.setStrategyName(strategyName);
        }

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public String getStrategyName() {
            return strategyName;
        }

        public void setStrategyName(String strategyName) {
            this.strategyName = strategyName;
        }

        private static Map<String, String> map = new HashMap<>();

        static {
            map.put(PDD.code, PDD.strategyName);
        }

        public static Map<String, String> getMap() {
            return map;
        }
    }
}

  Acima está como usar o modo de estratégia na primavera

  3. Resumo

   (1) Os casos do modelo de estratégia acima são relativamente simples e a lógica principal se reflete nas estratégias de descriptografia de diferentes plataformas. A estrutura é relativamente simples e esses padrões de projeto não são frequentemente usados ​​no desenvolvimento real. Além disso, esse design é semelhante ao modo de comando e à estrutura do modo adaptador, mas as idéias são diferentes.

   (2) O uso do padrão de design de estratégia pode otimizar a instrução if em nosso método. O uso de um grande número de instruções if torna o código difícil de expandir e manter. Ao mesmo tempo, também é muito difícil de encontrar vários problemas na fase posterior. Difícil de manter. Depois de usar esse padrão de design, o isolamento e a escalabilidade podem ser atendidos muito bem, e é muito fácil assumir as necessidades cada vez maiores.

   (3) Modo de estratégia, modo de adaptador, modo de combinação, etc. são relativamente semelhantes em algumas estruturas, mas cada modo tem suas próprias características lógicas. A melhor maneira de usá-lo é por meio de Mais prática para aprender com a experiência e fornecer melhor resultado técnico para P&D e design subsequentes.
 

Acho que você gosta

Origin blog.csdn.net/aazhzhu/article/details/113660759
Recomendado
Clasificación