zoukankan      html  css  js  c++  java
  • 设计模式:策略模式

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

    namespace StrategyDesignPattern
    {
        //抽象算法类
        public abstract class Strategy
        {
            //算法方法
            public abstract void AlgorithmInterface();
        }
        //具体算法A
        public class ConcreateStrategyA:Strategy
        {
            //算法A实现方法
            public override void AlgorithmInterface()
            {
                Console.WriteLine("算法A实现");
            }
        }
        //具体算法B
        public class ConcreateStrategyB : Strategy
        {
            //算法A实现方法
            public override void AlgorithmInterface()
            {
                Console.WriteLine("算法B实现");
            }
        }
        //上下文
        public class Context
        {
            Strategy Strategy;
            public Context(Strategy strategy)
            {
                Strategy = strategy;
            }
            //上下文接口
            public void ContextInterface()
            {
                Strategy.AlgorithmInterface();
            }
        }
    }
    View Code

    测试代码:

            public void StrategyTest()
            {
                Context context;
                context = new Context(new ConcreateStrategyA());
                context.ContextInterface();
    
                context = new Context(new ConcreateStrategyB());
                context.ContextInterface();
            }

     策略与简单工厂结合:

            public Context(string type)
            {
                switch(type)
                {
                    case "A":
                        Strategy = new ConcreateStrategyA();
                        break;
                    case "B":
                        Strategy = new ConcreateStrategyB();
                        break;
                }
            }
  • 相关阅读:
    ✨Synchronized底层实现---偏向锁
    🌞LCP 13. 寻宝
    ✨Synchronized底层实现---概述
    ⛅104. 二叉树的最大深度
    c++多线程之顺序调用类成员函数
    C++ STL实现总结
    C#小知识
    C#中HashTable和Dictionary的区别
    WPF的静态资源(StaticResource)和动态资源(DynamicResource)
    WPF之再谈MVVM
  • 原文地址:https://www.cnblogs.com/uptothesky/p/5253013.html
Copyright © 2011-2022 走看看