zoukankan      html  css  js  c++  java
  • 策略模式 Strategy

    public Context(String strategyType)
    
    {
    
    switch(strategyType)
    
    {
    
    case "算法A":
    
         strategy=new ContextStrategyA();
    
         break;
    
    case "算法B":
    
         strategy=new ContextStrategyB();
    
         break;
    
    ...............
    
    }
    
    }

    DF对策略模式的定义是这样的:它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的客户(main函数)。

    abstract class Strategy
    
    {
    
    public abstract void AlgorithmInterface();
    
    }
    class ConcreteStratrgyA extends Strategy
    
    {
    
     @override
    
    public void AlgorithmInterface()
    
    {
    
       //算法A的具体实现。
    
    }
    
    }
    class ConcreteStrategyB extends Strategy
    
    {
    
     @override
    
    public void AlgorithmInterface()
    
    {
    
      //算法B的具体实现
    
    }
    
    }
    class Context
    
    {
    
    Strategy strategy;
    
    public Context(Strategy strategy)
    
    {
    
    this.strategy=strategy;
    
    }
    
    public void ContextInterface)
    
    {
    
    strategy.AlgorithmInterface();
    
    }
    
    }

    在Context类的构造方法中可以使用简单工厂模式,实现策略模式和简单工厂模式的结合。

    public static void main(String[] args)
    
    {
    
    Context context;
    
    context=new Context(new ContextStrategyA());
    
    context.ContextInterface();
    
    
    
    context=new Context(new ContextStrategyB());
    
    context.ContextInterface();
    
    }
  • 相关阅读:
    代码模板
    DNSget Ip
    WC约束示使用
    下雨了
    Xml文件保存值不能及时更新
    代码不是艺术,而是达到目的的一种手段
    网站TCP链接暴增
    吐个槽吧
    正则表达式使用小注意
    Sereja and Two Sequences CodeForces
  • 原文地址:https://www.cnblogs.com/wangjiyuan/p/Strategy.html
Copyright © 2011-2022 走看看