• 策略模式


    策略模式定义了算法集合,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。简单点说,策略模式就是用来封装算法的一种设计模式。使用场景有很多,比如商场促销活动、车辆调度等等。

    1、定义抽象类

    abstract class BaseStrategy
    {
        public abstract void GetStrategy();
    }
    

    2、实现抽象类

    class DeriveStrategyA : BaseStrategy
    {
        public override void GetStrategy()
        {
            Console.WriteLine("继承抽象类,实现算法A");
        }
    }
    
    class DeriveStrategyB : BaseStrategy
    {
        public override void GetStrategy()
        {
            Console.WriteLine("继承抽象类,实现算法B");
        }
    }
    
    class DeriveStrategyC : BaseStrategy
    {
        public override void GetStrategy()
        {
            Console.WriteLine("继承抽象类,实现算法C");
        }
    }
    

    3、定义一个类,可以根据传入的参数创建相应的子类对象,并执行该类的方法。

    class Context
    {
        private BaseStrategy bs;
        public void CreateStrategy(BaseStrategy bs)
        {
            this.bs = bs;
        }
        public void ContextStrategy()
        {
            bs.GetStrategy();
        }
    }
    

    4、客户端调用

    static void Main(string[] args)
    {
        Context context = new Context();
        context.CreateStrategy(new DeriveStrategyA());
        context.ContextStrategy();
    
        context.CreateStrategy(new DeriveStrategyB());
        context.ContextStrategy();
    
        context.CreateStrategy(new DeriveStrategyC());
        context.ContextStrategy();
    
        Console.ReadKey();
    }
    

    5、运行结果

     6、备注:

       真实业务场景中客户端可以将策略模式和工厂模式结合起来获得需要的子类对象,或者客户端将标识符传到后台,由后台的Context类中使用工厂模式获得需要的子类对象。

     

  • 相关阅读:
    CSS中float与A标签的疑问
    常用的Css命名方式
    div css 盒子模型
    HTML初级教程 表单form
    Redis学习记录(二)
    Redis学习记录(一)
    Java源码——HashMap的源码分析及原理学习记录
    java编程基础——从上往下打印二叉树
    java编程基础——栈压入和弹出序列
    java基础编程——获取栈中的最小元素
  • 原文地址:https://www.cnblogs.com/sunice/p/6624390.html
Copyright © 2020-2023  润新知