什么是策略模式?谈谈你的理解

1 个回答

  • 念远怀人
    今朝有酒今朝醉,明日愁来明日愁。
    # 策略模式 ## 定义 if条件的终结器,通过封装一系列算法,并且他们可以随便替换,根据不同环境使用不同策略。 ## 组件 - 抽象策略:定义公用的接口,各种算法实现此接口 - 具体策略:具体算法实现的子类 ## 类图 ![image.png](https://images.codewd.com/4a3e6ffa6fe0eb097638bd19588a756a.jpg "image.png") ## 代码 ``` package com.lglbc.strategy; public abstract class AbstractStrategy { public String type; abstract void strategyMethod(); } ``` ``` package com.lglbc.strategy; public class ConcreteStrategyA extends AbstractStrategy { public ConcreteStrategyA(){ this.type ="concreteStrategyA"; } @Override void strategyMethod() { System.out.println("ConcreteStrategyA.strategyMethod......"); } } ``` ``` package com.lglbc.strategy; public class ConcreteStrategyB extends AbstractStrategy { public ConcreteStrategyB(){ this.type ="concreteStrategyB"; } @Override void strategyMethod() { System.out.println("ConcreteStrategyB.strategyMethod......"); } } ``` ``` package com.lglbc.strategy; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Client { public static void main(String[] args) { List<AbstractStrategy> strategies= new ArrayList<>(); strategies.add(new ConcreteStrategyA()); strategies.add(new ConcreteStrategyB()); Map<String,AbstractStrategy> strategyMap = new HashMap<>(); strategies.forEach(strategy->strategyMap.put(strategy.type,strategy)); strategyMap.get("concreteStrategyA").strategyMethod(); strategyMap.get("concreteStrategyB").strategyMethod(); } } ```
    发布于 2025-07-17 04:51 •IP属地 山东
    举报
    评论
    收藏