zoukankan      html  css  js  c++  java
  • 【设计模式】-行为型-2-策略模式

    主要角色

    1. 抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现。
    2. 具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现。
    3. 环境(Context)类:持有一个策略类的引用,最终给客户端调用。

    代码示例

    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. 一个系统需要动态地在几种算法中选择一种时,可将每个算法封装到策略类中。
  • 相关阅读:
    链式表的操作
    顺序表的操作
    MDX基础
    1071 小赌怡情 (15 分)
    1069 微博转发抽奖 (20 分)
    1068 万绿丛中一点红 (20 分)
    1066 图像过滤 (15 分)
    02-线性结构2 一元多项式的乘法与加法运算 (20 分
    03-树1 树的同构 (25 分)
    03-树3 Tree Traversals Again (25 分)
  • 原文地址:https://www.cnblogs.com/tuofan/p/12364041.html
Copyright © 2011-2022 走看看