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