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:

    

  • 相关阅读:
    Alpha冲刺(1/4)
    团队项目用户验收评审
    beta冲刺 第四天
    beta冲刺 第三天
    Beta冲刺 第二天
    Beta冲刺 第一天
    实验十一 团队作业7---团队项目设计完善&编码测试
    Alpha冲刺四
    Alpha冲刺
    《Miracle_House》团队项目系统设计改进
  • 原文地址:https://www.cnblogs.com/edmundli/p/strategypattern.html
Copyright © 2011-2022 走看看