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

    今天研究一下策略模式。

    Strategy Pattern UML

    示例程序如下:

    Strategy.cs

    namespace StrategyPatternExample
    {
        public interface Strategy
        {
            int Execute(int a, int b);
        }
    }
    

    Context.cs

    namespace StrategyPatternExample
    {
        public class Context
        {
            private Strategy strategy;
    
            public Context(Strategy strategy)
            {
                this.strategy = strategy;
            }
    
            public int ExecuteStrategy(int a, int b)
            {
                return strategy.Execute(a, b);
    
            }
        }
    }
    

    ConcreteStrategyAdd.cs

    using System;
    
    namespace StrategyPatternExample
    {
        class ConcreteStrategyAdd : Strategy
        {
            public int Execute(int a, int b)
            {
    
                Console.WriteLine("Called ConcreateStrategyAdd's execute. a = {0}, b = {1}", a, b);
                return a + b;
            }
    
    
        }
    }
    

    ConcreteStrategySubtract.cs

    using System;
    
    namespace StrategyPatternExample
    {
        class ConcreteStrategySubtract:Strategy
        {
            public int Execute(int a, int b)
            {
                Console.WriteLine("Called ConcreteStrategySubtract's execute, a = {0}, b = {1}",a, b);
                return a - b;
            }
        }
    }
    

    Program.cs

    using System;
    
    namespace StrategyPatternExample
    {
        class Program
        {
            static void Main(string[] args)
            {
                Context context;
    
                context = new Context(new ConcreteStrategySubtract());
                int resultSub = context.ExecuteStrategy(2, 1);
                Console.WriteLine("ConcreteStrategySubtract's result is {0}", resultSub);
                Console.WriteLine();
    
                context = new Context(new ConcreteStrategyAdd());
                int resultAdd = context.ExecuteStrategy(3, 4);
                Console.WriteLine("ConcreteStrategyAdd's result is {0}", resultAdd);
            }
        }
    }
    

    result:

    

  • 相关阅读:
    对于js中原型的理解
    换行问题
    居中方法
    浮动清除
    js基础内容 原型与实例
    uniapp 吸顶 小demo
    uniapp 锚点滚动报错(h.push is not a function)
    uni-app 页面滚动到指定位置
    过滤后端返回的html文本标签
    uniapp 上拉加载
  • 原文地址:https://www.cnblogs.com/edmundli/p/strategypattern.html
Copyright © 2011-2022 走看看