SPRINGのストラテジーモードで使用される正しい姿勢

SPRINGのストラテジーモードで使用される正しい姿勢

 

1.ストラテジーモードの概要    

      ストラテジーモード:ストラテジーモードは、多数のif-elseコードを置き換えることができる強力なツールです。支払い(WeChat支払い、Alipay支払い、銀行開設支払い)、統合されたeコマースプラットフォームの復号化( pdd復号化、dj復号化、Taobao)復号化)、戦略モデルは外の世界への統一されたソリューションへの入り口を提供し、特定のソリューション戦略は自分で選択します。私たちがよく耳にするスクリプトは、 -elseは1000の給与を差し引きます。これは、-elseの場合、高レベルの人々がどれほど嫌うかを示します。したがって、戦略モデルは、プロジェクト組織の結合度を減らし、プロジェクトの保守コストを削減する上で特に重要です。

 

2.戦略モードの使用

     上記の紹介のシナリオの1つを選択しましょう。たとえば、ロジスティクスプロジェクトでは、さまざまなeコマースプラットフォームを統合してから、注文受信者情報を復号化します。

     (1)戦略インターフェースを定義する

public interface IDecryptStrategyService {

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

  (2)定義された戦略の具体的な実現

@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)実装定義の戦略セレクターの実装

@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;
        }
    }
}

  以上が春のストラテジーモードの使い方です

  3.まとめ

   (1)上記の戦略モデルのケースは比較的複雑ではなく、主要なロジックはさまざまなプラットフォームの復号化戦略に反映されています。構造は比較的単純であり、このようなデザインパターンは実際の開発ではあまり使用されません。また、この設計はコマンドモードとアダプタモードの構造に似ていますが、考え方が異なります。

   (2)ストラテジーデザインパターンを使用すると、メソッドでifステートメントを最適化できます。多数のifステートメントを使用すると、コードの拡張と保守が困難になります。同時に、後の段階でさまざまな問題が発生します。保守が困難です。このようなデザインパターンを使用すると、分離とスケーラビリティを非常にうまく満たすことができ、増え続けるニーズに対応するのは非常に簡単です。

   (3)ストラテジーモード、アダプターモード、コンビネーションモードなどは、一部の構造で比較的類似していますが、各モードには独自の論理的特性があります。これを使用する最良の方法は、経験から学び、その後の研究開発と設計。
 

おすすめ

転載: blog.csdn.net/aazhzhu/article/details/113660759