JAVA 设计模式 策略模式

xiaoxiao2021-02-28  113

用途


Title 它 定义了算法家族, 分别封装起来,让它们之间 可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

策略模式是一种 行为型模式。

 

结构

图-策略模式结构图

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();     } } View Code

运行结果

算法A 算法B 算法C View Code

 

推荐

本文属于 JAVA设计模式系列

参考资料

《大话设计模式》

《HeadFirst设计模式》 

 

转载请注明原文地址: https://www.6miu.com/read-65182.html

最新回复(0)