• 策略模式


    一. 策略模式结构图

     二. 策略模式实现

    package strategy;
    public class StrategyPattern
    {
        public static void main(String[] args)
        {
            Context c=new Context();
            Strategy s=new ConcreteStrategyA();
            c.setStrategy(s);
            c.strategyMethod();
            System.out.println("-----------------");
            s=new ConcreteStrategyB();
            c.setStrategy(s);
            c.strategyMethod();
        }
    }
    //抽象策略类
    interface Strategy
    {   
        public void strategyMethod();    //策略方法
    }
    //具体策略类A
    class ConcreteStrategyA implements Strategy
    {
        public void strategyMethod()
        {
            System.out.println("具体策略A的策略方法被访问!");
        }
    }
    //具体策略类B
    class ConcreteStrategyB implements Strategy
    {
      public void strategyMethod()
      {
          System.out.println("具体策略B的策略方法被访问!");
      }
    }
    //环境类
    class Context
    {
        private Strategy strategy;
        public Strategy getStrategy()
        {
            return strategy;
        }
        public void setStrategy(Strategy strategy)
        {
            this.strategy=strategy;
        }
        public void strategyMethod()
        {
            strategy.strategyMethod();
        }
    }

     三. 使用场景

    1. 动态选择一种算法。
    2. 替换if else或switch case。
    3. 对客户隐藏实现细节。

  • 相关阅读:
    三十一:数据库之SQLAlchemy属性常用数据类型和Column常用参数
    xml和configparser模块
    shelve和hashlib模块
    json和pickle序列化模块
    sys模块和shutil模块
    random和os模块
    collections、time和datetime模块
    Python模块及其导入
    Python生成器和迭代器
    Python装饰器
  • 原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/13192258.html
Copyright © 2020-2023  润新知