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:

    

  • 相关阅读:
    docker生产——容器通信
    .net core集成JWT(基础)
    JWT基本概念
    MySQL数据更新
    MySQL查询练习2
    C语言程序设计之字符串处理
    MySQL查询练习
    博客文章搬迁
    C语言程序设计之 数组2020-10-28
    Java方法重载浅谈
  • 原文地址:https://www.cnblogs.com/edmundli/p/strategypattern.html
Copyright © 2011-2022 走看看