用途
Title
它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
策略模式是一种行为型模式。
结构
aaarticlea/png;base64,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" alt="" />
图-策略模式结构图
Strategy : 定义所有算法的公共接口(AlgorithmInterface)。Context 使用这个接口去调用 ConcreteStrategy 定义的具体算法。
abstract class Strategy { public abstract void AlgorithmInterface(); }
ConcreteStrategy : 实现 Strategy 中的算法接口(AlgorithmInterface)。
class ConcreteStrategyA extends Strategy { @Override public void AlgorithmInterface() { System.out.println("算法A"); } } class ConcreteStrategyB extends Strategy { @Override public void AlgorithmInterface() { System.out.println("算法B"); } } class ConcreteStrategyC extends Strategy { @Override public void AlgorithmInterface() { System.out.println("算法C"); } }
Context : 用一个 ConcreteStrategy 来配置。维护一个对 Strategy 对象的引用。
class Context { Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } public void ContextInterface() { strategy.AlgorithmInterface(); } }
测试代码
public class StrategyPattern {
public static void main(String[] args) {
Context context1 = new Context(new ConcreteStrategyA());
context1.ContextInterface();
Context context2 = new Context(new ConcreteStrategyB());
context2.ContextInterface();
Context context3 = new Context(new ConcreteStrategyC());
context3.ContextInterface();
}
}
public static void main(String[] args) {
Context context1 = new Context(new ConcreteStrategyA());
context1.ContextInterface();
Context context2 = new Context(new ConcreteStrategyB());
context2.ContextInterface();
Context context3 = new Context(new ConcreteStrategyC());
context3.ContextInterface();
}
}
运行结果
算法A
算法B
算法C
算法B
算法C