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:

    

  • 相关阅读:
    使用QT在子线程中访问串口
    小程序批量上传图片方案
    Jenkins自动化远程部署(vue-github)
    nginx配置https证书
    Linux 安装php7
    Vue技术点整理-指令
    如何保证接口的幂等性?
    mybatis 一对多分页查询数据条数不匹配解决
    源码系列-JDK-String
    kafka window 操作
  • 原文地址:https://www.cnblogs.com/edmundli/p/strategypattern.html
Copyright © 2011-2022 走看看